#include <stdio.h>
#include <stdlib.h>

#include "bitree.h"

#include "linkqueue.h"


void LevelOrderTraverse(BiTree T,void(*Visit)(TElemType));


int main()
{
	BiTree T;	
	CreateBiTree(T);
	printf("层序遍历为:");
	LevelOrderTraverse(T,visit);
	DestoryBiTree(T);
	return 0;
}


void LevelOrderTraverse(BiTree T,void(*Visit)(TElemType))
 { // 初始条件:二叉树T存在,Visit是对结点操作的应用函数
   // 操作结果:层序递归遍历T(利用队列),对每个结点调用函数Visit一次且仅一次
    /********** Begin **********/ 
    LinkQueue q;
    QElemType a;
    if(T){
        InitQueue(q);
        EnQueue(q,T);
        while(!QueueEmpty(q)){
            DeQueue(q,a);
            Visit(a->data);
            if(a->lchild)
                EnQueue(q,a->lchild);
            if(a->rchild)
                EnQueue(q,a->rchild);
        }
        printf("\n");
    }
    // LinkQueue q;
	// QElemType a;
	// if(T){
	// 	InitQueue(q);
	// 	EnQueue(q,T);
	// 	while(!QueueEmpty(q)){
	// 		DeQueue(q,a);
	// 		Visit(a->data);
	// 		if(a->lchild)
	// 			EnQueue(q,a->lchild);
	// 		if(a->rchild)
	// 			EnQueue(q,a->rchild);
	// 	}
	// 	printf("\n");
	// }
    /********** End **********/
}

posted on 2024-06-20 17:42  findscripter  阅读(10)  评论(0)    收藏  举报