1.层次遍历算法图解
2.算法代码实现。
真实环境中二叉树的节点是不确定的,所以应用链式队列来进行存储二叉树的节点。
//层次遍历二叉树
bool LevelOrder(BitTree T) {
if (!T) {
return false;
}
LinkQueue Q;
initLinkQueue(Q); //初始化链式队列
EnLinkQueue(Q, T); //将树的根节点入队
BiTNode* p = NULL; //用来存储出队的结点
while (!isEmpty(Q)) { //循坏扫描队列是否为空
DelinkQueue(Q, p); //出队列的首元素
VisitT(p); //访问出队列的元素
if (p->lchild) { //如果出队列的结点有左孩子,将其入队
EnLinkQueue(Q, p->lchild);
}
if (p->rchild) { //如果出队列的结点有有孩子,将其入队
EnLinkQueue(Q, p->rchild);
}
}
}