码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的层次遍历

时间:2016-10-24 20:26:25      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:enqueue   ref   class   节点   vps   初始化   eem   des   存在   

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

二叉树的层次遍历

标签:enqueue   ref   class   节点   vps   初始化   eem   des   存在   

原文地址:http://www.cnblogs.com/-xss/p/5994236.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!