怎样按层次打印二叉树
2015-11-09 15:52
218 查看
打印二叉树某一层的节点
按层非递归遍历二叉树是一道常见的题目,编程之美上有一个打印出二叉树某一层的节点的问题,稍稍有意思。
在编程之美上,提到了两种解法:
(1)一种是递归解法 (如果树的层次不深,使用递归是不会有太大的开销的)
(2)另一种则是利用队列的非递归解法
如果只是简单的按层遍历的话,可以用一个队列,先将上层节点入队,节点出队的时候将其孩子节点入队,这样就可以达到按层入队出队的效果。
要打印出某一层,可以在出队的时候一层一层地出,同时计算出队的次数,就可以判断出当前是哪一层,下面是我的代码:
.......
出处:http://www.cnblogs.com/-Lei/archive/2013/02/25/2928629.html
按层非递归遍历二叉树是一道常见的题目,编程之美上有一个打印出二叉树某一层的节点的问题,稍稍有意思。
在编程之美上,提到了两种解法:
(1)一种是递归解法 (如果树的层次不深,使用递归是不会有太大的开销的)
void TransLevel(Node* root,int level) //level为剩下的level { if(root == NULL) return ; else { if(level == 1) printf("%d ",root->data); else { TransLevel(root->left,level-1); TransLevel(root->right,level-1); } } }
(2)另一种则是利用队列的非递归解法
如果只是简单的按层遍历的话,可以用一个队列,先将上层节点入队,节点出队的时候将其孩子节点入队,这样就可以达到按层入队出队的效果。
要打印出某一层,可以在出队的时候一层一层地出,同时计算出队的次数,就可以判断出当前是哪一层,下面是我的代码:
.......
出处:http://www.cnblogs.com/-Lei/archive/2013/02/25/2928629.html
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- 有关数据库SQL递归查询在不同数据库中的实现方法
- C#中的递归APS和CPS模式详解
- WinForm实现按名称递归查找控件的方法
- 使用SqlServer CTE递归查询处理树、图和层次结构
- C#中的尾递归与Continuation详解
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- C++非递归队列实现二叉树的广度优先遍历
- php递归创建目录的方法
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- PHP递归创建多级目录
- Javascript递归打印Document层次关系实例分析
- oracle 使用递归的性能提示测试对比
- 使用curl递归下载软件脚本分享
- Perl脚本实现递归遍历目录下的文件
- JavaScript的递归之递归与循环示例介绍
- C# 递归查找树状目录实现方法
- 全排列算法的非递归实现与递归实现的方法(C++)