5-6 层序遍历(广度优先遍历)
来源:互联网 发布:仿淘宝手机端筛选样式 编辑:程序博客网 时间:2024/05/14 23:31
重点把握:我们首先将每一层的节点优先遍历完毕。
之前的遍历叫做深度优先遍历,我们尝试先走到最深。这一节我们学习广度优先遍历。
要想完成广度优先遍历,我们要借助队列(先进先出,后进后出)的概念。
思想 :当队列中的队首出队的时候,要从二叉搜索树中找到它的两个孩子入队。队列出队为空的时候,就将二叉树遍历完成了。
我们再归纳一下广度优先遍历的步骤:
1、将根节点入队(入队的时候不做别的操作);
2、队列非空,所以接下来就要出队,规则是:依次出队,只要出队的元素有孩子,左右孩子依次入队,如果没有孩子不做任何操作。
代码实现:
/** * 层序遍历 */public void levelOrder() { Queue<Node> queue = new ArrayDeque<>(); while (!queue.isEmpty()) { Node node = queue.poll(); System.out.println(node.key); if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } }}
以下的总结是针对深度优先遍历的 3 种方式和广度优先的1种方式,总共 4 种遍历方式而言的:整个遍历的复杂度是:O(n)。
每一个节点只访问了常数次。归并排序和快速排序的本质其实是二叉搜索树的深度优先遍历的过程。
重点把握思想:1、递归调用;2、使用队列实现一个更加复杂的算法的过程。
阅读全文
0 0
- 5-6 层序遍历(广度优先遍历)
- 从上到下打印二叉树(层序遍历,广度优先遍历二叉树)
- java二叉树的前中后序,深度优先,广度优先(层序)遍历
- (图)广度优先遍历
- 数据结构(图遍历--广度优先遍历)
- 【100题】二叉树的层序遍历(广度优先遍历)
- 二叉树的层序遍历与图的广度优先遍历
- 广度优先遍历BFS
- 广度优先遍历
- 图--广度优先遍历
- 图广度优先遍历
- 广度优先遍历
- 广度优先遍历-示例
- 广度优先遍历代码
- 广度优先遍历
- 广度优先遍历
- 广度优先遍历
- Leetcode - 广度优先遍历
- 5-5 二分搜索树的遍历(深度优先遍历)
- 2017 Fall Software Engineering Learning (1)
- 堆排序
- java鬼混笔记:shiro 8、连接数据库授权,注解设置权限
- mybatis+spring spring单元测试报错
- 5-6 层序遍历(广度优先遍历)
- spring boot 高度整合了jar包 ===》spring boot 启动器
- 5-7 删除一个节点:步骤1-删除最大值,最小值
- 5-8 二分搜索树的删除,删除一个节点的步骤2
- java虚拟机学习笔记二
- 网易互娱笔试题----最多有多少点在一条直线上
- Redraiment猜想+素数求和
- java正则表达式实例
- 继承