二叉树的层次遍历
创作时间:
作者:
@小白创作中心
二叉树的层次遍历
引用
CSDN
1.
https://blog.csdn.net/weixin_53564801/article/details/125749859
二叉树的层次遍历是数据结构中一个重要的算法,广泛应用于各种场景。本文将从概念、实现思路到具体代码实现,详细讲解如何使用队列实现二叉树的层次遍历。
1. 层次遍历概念
层次遍历就是逐层地,从左到右访问所有节点。如下图所示:
2. 方法实现思路
对于层序遍历,无疑是一层一层结点查找。那我们能不能找一个队列,把每一层的结点依次放入队列中,这样我们就能实现程序遍历啦。
首先创建一个队列,然后把根节点放入队列中。接着就把 queue 的头结点弹出,也就是A,放到 cur中去,并打印。此时 cur 指向 A结点
cur 设置的目的:方便我们把下一层结点结点放到队列当中。
队列特点: 先进先出。
我们判断 cur 的左结点是否为空,如果不为空就把左结点放入队列中。同时我们也要判断cur的右节点,操做相同。
每弹出一个结点,就会把该节点的左右孩子插入到队列中(左右孩子不为空的情况下!),然后弹出队列头结点。
也就是一层一层遍历,比如遍历完B后,把B的左右孩子放到C的后面,直到遍历完C后(第二层)才会遍历B的左右孩子(第三层)。
总结:
- 定义一个队列,把root根节点放入队列中。
- 弹出对头节点,并遍历打印。
- 判断当前节点的左右孩子是否为null,如果不为null,则入队。
- 检测队列,如果队列为空,则说明层序遍历结束。
层次遍历对于二叉树来说算是比较基础的一种算法,其拓展了许多。例如判断二叉树是否为满二叉树等。
大家还可以去做 leetcode 做一下这道题加以巩固:二叉树的层序遍历
3. 代码实现
import java.util.Queue;//导入队列的包
public class BinaryTree {
//内部类
static class TreeNode {
public char val;
public TreeNode left;//左孩子的引用
public TreeNode right;//右孩子的引用
public TreeNode(char val) {
this.val = val;
}
}
/**
* 创建一棵二叉树 返回这棵树的根节点
*
* @return
*/
public TreeNode createTree() {
TreeNode A = new TreeNode('A');
TreeNode B = new TreeNode('B');
TreeNode C = new TreeNode('C');
TreeNode D = new TreeNode('D');
TreeNode E = new TreeNode('E');
TreeNode F = new TreeNode('F');
TreeNode G = new TreeNode('G');
TreeNode H = new TreeNode('H');
A.left = B;
A.right = C;
B.left = D;
B.right = E;
C.left = F;
C.right = G;
E.right = H;
return A;
}
//层序遍历
void levelOrder(TreeNode root) {
if(root == null) return;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode cur = queue.poll();
System.out.print(cur.val);
if(cur.left != null){
queue.offer(cur.left);
}
if(cur.right != null){
queue.offer(cur.right);
}
}
}
public static void main(String[] args) {
BinaryTree bt = new BinaryTree();
TreeNode root = bt.createTree();
bt.levelOrder(root);
}
}
代码中树的形状,和代码结果如下:
注:
Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口。
在使用时我们要导入 import java.util.Queue ;
Queue中的方法:
热门推荐
2024年1-9月中国与美国农产品贸易数据报告
六味地黄丸的正确使用指南:功效与禁忌全解析
如何填写出国护照办理申请表:细节指导与常见问题解答
幸福的千年之问:从孔子到庄子,探寻心灵的归宿
怎么深入分析股票市场的下降趋势和应对策略?这种分析方法在实际投资中有哪些局限性?
摄影中怎么用光来提升你的拍摄水平
女贞子的临床配方 | 女贞子泡水喝的功效与作用及禁忌
顶刊视角:高敏肌钙蛋白助力普通人群心血管风险预测
指关节疼痛的成因、治疗与预防
桃金娘根的功效与作用及禁忌
全画幅相机与半画幅相机的全面对比
剃头蓄发炸毛似海胆:探索头皮健康与毛发再生的医疗新策略
股指的价值如何评估?这种评估方法的准确性如何保证?
2025年清明很特殊,60年不遇,“4类人要上坟”,指哪“4类”人?
喉炎的治疗方法,喉炎怎么办
珍藏之美:探索100款极致扳指的艺术与魅力
越南的主要产业有哪些?这些产业的发展趋势如何?
酒店声学设计,打造静谧舒适的住宿环境
1-33层住宅如何科学选楼层?实用指南来了
刚买的手机拍照效果异常好是为什么?如何调整拍照设置?
如何缓解干燥:护肤、饮食及生活习性改善指南
家居植物选择,让客厅更自然(客厅适合摆放哪些绿色植物?)
2024年安徽省大学排名出炉:合工大位列第二,安师大位列第四
计算机考研学校推荐:这6所院校性价比超高
农药残留?果蔬正确清洗方法来了!
“氢化植物油”是什么油?危害到底有多大?看完,你还敢经常吃吗
银行迎来巨变!工行、建行2600家网点关闭,透露了什么信号?
直销行业大揭秘:未来趋势与挑战分析
煲仔饭酱汁做法(2种煲仔饭制作方法)
橡塑海绵板在空调系统中的隔热与吸音应用