#include <stdio.h>
#include "Queue.h"

void BreadthFirst(Tree T, void process(TreeElementType E))/*       L*/
 { Queue Q;  Tree subT;                                          /*.*/
   if( T != NULL )                                               /*A*/
    { Q = NULL;                                                  /*l*/
      addq(T, &Q); /* i.e. Q = <T> */                            /*l*/
                                                                 /*i*/
      while( !emptyq(Q) )                                        /*s*/
       { popq(&subT, &Q);                                        /*o*/
                                                                 /*n*/
         if(subT->left  != NULL) addq(subT->left,  &Q); /* addq any */
         if(subT->right != NULL) addq(subT->right, &Q); /* children */

         process(subT->elt);
       }/*while*/
    }/*if*/
 }/*BreadthFirst*/

/* Breadth First Traversal of a Tree */
