二叉树(2)层次遍历
2016-04-05 11:21
246 查看
层次遍历的问题如下:
层次遍历的打印结果应该是:
1 2 3 4 5 6 7 8 9 10 11
思路:
利用一个队列来存储二叉树的“层”状结构(用【5】来表示值为5的二叉树节点):
(1)将根节点放入该空队列。队列为:【1】
(2)打印根节点【1】的值,将该根节点的左右孩子放入队列的末尾。弹出根节点。队列为【2】【3】
(3)打印队列的第一个元素,即根节点的左孩子【2】,并将该节点的左右孩子放入队列的末尾,弹出【2】。队列为【3】【4】【5】
(4)打印队列的第一个元素【3】,并将该节点的左右孩子放入队列的末尾,弹出【3】。队列为【4】【5】【6】【7】
代码如下:
层次遍历的打印结果应该是:
1 2 3 4 5 6 7 8 9 10 11
思路:
利用一个队列来存储二叉树的“层”状结构(用【5】来表示值为5的二叉树节点):
(1)将根节点放入该空队列。队列为:【1】
(2)打印根节点【1】的值,将该根节点的左右孩子放入队列的末尾。弹出根节点。队列为【2】【3】
(3)打印队列的第一个元素,即根节点的左孩子【2】,并将该节点的左右孩子放入队列的末尾,弹出【2】。队列为【3】【4】【5】
(4)打印队列的第一个元素【3】,并将该节点的左右孩子放入队列的末尾,弹出【3】。队列为【4】【5】【6】【7】
代码如下:
public void levelorderTraverse(BTreeNode node = null) { if (node == null) node = head; if (node == null) Console.WriteLine("empty tree"); Queue<BTreeNode> queue = new Queue<BTreeNode>(); queue.Enqueue(head); while(queue.Count>0) { Console.WriteLine(queue.First().data); if (queue.First().lChild != null) queue.Enqueue(queue.First().lChild); if (queue.First().rChild != null) queue.Enqueue(queue.First().rChild); queue.Dequeue(); } }
相关文章推荐
- [LeetCode] Employees Earning More Than Their Managers 员工挣得比经理多
- 2015.7.3, 杭州……产品级敏捷案例研究
- 分布式存储技术及应用
- 关于arguments对象以及函数的柯里化;
- 我是一个线程
- [New learn]AutoLayout调查基于code
- 使用的前台开发在线工具
- [OI]省选前模板整理
- 《构建之法》第一至三章
- UVA 10048 A - Wormholes
- 磁盘问题引起的MySQL问题
- java web表单提交ajax参数封装方法
- 制作一个可以滑动操作的 Table View Cell
- protocol buffer安装后使用出错
- TortoiseGit 使用教程
- android基础部分再学习---再谈Service进程服务通信
- assert()
- Explorer.exe 的命令行参数
- mvc 设置默认页技巧
- 《构建之法》第四章读后感