//
二叉树的层序遍历
(采用队列存储结构):二维结构的线性化
队列实现算法:
遍历从根节点开始,首先将根节点入队,然后开始执行循环:
1.结点出队
2.访问该结点
3.其左右儿子入队(非空)
队列实现算法:
遍历从根节点开始,首先将根节点入队,然后开始执行循环:
1.结点出队
2.访问该结点
3.其左右儿子入队(非空)
void LevelOrderTraversal(BinTree BT)
{
Queue Q;
BinTree T;
if(!BT) return ;//若空树,返回
Q = CreatQueue(MaxSize);//创建空队列
AddQueue(Q,BT);
while(!IsEmpty(Q))
{
T = DeleteQueue(Q);
printf("%d\n",T->Data);
if(T->Left) AddQueue(Q,T->Left);
if(T->Right) AddQueue(Q,T->Right);
}
}
//计算二叉树的深度
//计算二叉树的深度
int depth(BinTree T)
{
int d1,d2;
if(!T)
return 0;
else
{
d1=depth(T->lchild);
d2=depth(T->rchild);
return (d1 >= d2)?(d1+1):(d2+1);
}
}