二叉树的层次遍历

论坛 期权论坛 期权     
阳春映雪   2018-4-26 13:59   3521   3
请高手解释一下二叉树的层次遍历的精髓,最好是能用数学思维的,不只是敲出代码。谢谢。
分享到 :
0 人收藏

3 个回复

倒序浏览
2#
子夜杨旭  3级会员 | 2018-4-30 01:55:45
设计一个算法层序遍历二叉树(同一层从左到右访问)。思想:用一个队列保存被访问的当前节点的左右孩子以实现层序遍历。
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 ;
这个已经很详细了!你一定可以看懂的!加油啊!
3#
pxuxian  2级吧友 | 2018-4-30 01:55:46
树:      A
          / \
         B   F
        / \     \
       C  D   G
      / \
     E   F
从上到下,从左到右:A、B、F、C、D、G、E、F
4#
深海里的蓝天  2级吧友 | 2018-4-30 01:55:47
按层来,从左往右数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP