void levelOrder(tree t){ treenode *s[10]; int front,rear,tag; front=rear=-1; tag=0; treenode *p; s[++rear]=t; while (front<rear && tag==0) { p=s[++front]; printf("%c",p->info); if (p->lchild) s[++rear]=p->lchild; if (p->rchild) s[++rear]=p->rchild; } }
struct squeue { struct treenode* data[MaxSize]; int front, rear, tag; };
bool EnQueue(squeue& s, treenode *x) { if (s.front == s.rear && s.tag == 1) { printf("队满 进队失败"); return false; } s.data[s.rear] = x; s.rear = (s.rear + 1) % MaxSize; s.tag = 1; return true; }
int DeQueue(squeue& s, treenode* &x) { if (s.front == s.rear && s.tag == 0) { printf("空 出队失败"); return 0; } x = s.data[s.front]; s.front = (s.front + 1) % MaxSize; s.tag = 0; return 1; } void levelOrder2(tree t) { squeue q; int front,rear,tag; front=rear=tag=0; treenode *p; EnQueue(q,t); while(!(front==rear&&tag==0)) { DeQueue(q,p); printf("%c",p->info); if(p->lchild) EnQueue(q,p->lchild); if(p->rchild) EnQueue(q,p->rchild); } }
|