二叉树的层次遍历

更新时间:02-10 教程 由 初遇 分享

二叉树的层次遍历?

设计一个算法层序遍历二叉树(同一层从左到右访问)。思想:用一个队列保存被访问的当前节点的左右孩子以实现层序遍历。

void HierarchyBiTree(BiTree Root){

LinkQueue *Q; // 保存当前节点的左右孩子的队列

InitQueue(Q); // 初始化队列

if (Root == NULL) return ; //树为空则返回

BiNode *p = Root; // 临时保存树根Root到指针p中

Visit(p->data); // 访问根节点

if (p->lchild) EnQueue(Q, p->lchild); // 若存在左孩子,左孩子进队列

if (p->rchild) EnQueue(Q, p->rchild); // 若存在右孩子,右孩子进队列

while (!QueueEmpty(Q)) // 若队列不空,则层序遍历 { DeQueue(Q, p); // 出队列

Visit(p->data);// 访问当前节点

if (p->lchild) EnQueue(Q, p->lchild); // 若存在左孩子,左孩子进队列

if (p->rchild) EnQueue(Q, p->rchild); // 若存在右孩子,右孩子进队列

}

DestroyQueue(Q); // 释放队列空间

return ;

这个已经很详细了!你一定可以看懂的!加油啊!

声明:关于《二叉树的层次遍历》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2188975.html