首页 > 其他 > 详细

二叉树的层次遍历

时间:2014-11-03 23:55:40      阅读:475      评论:0      收藏:0      [点我收藏+]

  进行层次遍历时,对某一层的节点访问完后,再按照对它们的访问次序对各个节点的左右节点的左右孩子顺序访问。这样一层一层进行,先访问的节点其左右孩子也要先访问,与队列的操作原则较吻合。因此层次遍历算法采用一个环形队列来实现。

层次遍历的过程:

  先将根节点进队,在队不为空时循环:从队列中出列一个节点*p,访问它;若它有左孩子节点,将左孩子节点进队;若它有右孩子节点,将右孩子进队。如此操作直到队为空。算法如下:

 1 void LevelOrder(tree *root)
 2 {
 3     tree *p;
 4     tree *que[fb];//定义环形队列,存放节点指针
 5     int front,rear;//定义队头
 6     front = rear = -1;//置队列为空队列
 7     rear++;
 8     que[rear] = root;//根节点指针进队
 9     while(front!=rear){//队列不为空
10         front =(front + 1) % fb;
11         p = que[front];//队头出队列
12         cout<<p->NodeNum<<" ";//
13         if(p->left!=NULL){//有左孩子时进队
14             rear = (rear + 1) % fb;
15             que[rear] = p->left;
16         }
17         if(p->right != NULL){//有右孩子时进队
18             rear = (rear + 1) % fb;
19             que[rear] = p->right;
20         }
21     }
22 }

 

二叉树的层次遍历

原文:http://www.cnblogs.com/ohxiaobai/p/4072360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!