详细谈谈二叉树的层次遍历

简介: 详细谈谈二叉树的层次遍历

人不走空

                                                                     

     🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

二叉树是一种常见的数据结构,它由节点组成,每个节点最多有两个子节点:左子节点和右子节点。层次遍历是一种遍历二叉树节点的方法,从上到下逐层访问每个节点。

1.例子

在层次遍历中,每次从队列中取出一个节点,将其左右子节点入队。在你的例子中,二叉树的结构如下:

1
   / \
  2   3
 / \
4   5

遍历过程如下:

  1. 首先,将根节点 1 入队。
  2. 出队并打印 1,然后将其左右子节点 2 和 3 入队。
  3. 出队并打印 2,然后将其左右子节点 4 和 5 入队。
  4. 出队并打印 3。
  5. 出队并打印 4。
  6. 出队并打印 5。

2.代码

二叉树的层次遍历是一种逐层遍历二叉树节点的方法,通常使用队列来实现。以下是一个Java实现的示例代码:

import java.util.LinkedList;
import java.util.Queue;
class TreeNode {
    int val;
    TreeNode left, right;
    public TreeNode(int x) {
        val = x;
        left = right = null;
    }
}
public class BinaryTreeLevelOrderTraversal {
    public static void main(String[] args) {
        // 创建二叉树
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);
        System.out.println("二叉树的层次遍历:");
        levelOrderTraversal(root);
    }
    // 二叉树的层次遍历
    private static void levelOrderTraversal(TreeNode root) {
        if (root == null) {
            return;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            TreeNode current = queue.poll();
            System.out.print(current.val + " ");
            if (current.left != null) {
                queue.offer(current.left);
            }
            if (current.right != null) {
                queue.offer(current.right);
            }
        }
    }
}
  • 创建一个队列 queue 用于存储待访问的节点。
  • 将根节点入队列。
  • 进入循环,直到队列为空:
  • 出队列一个节点,输出其值。
  • 如果该节点有左子节点,将左子节点入队列。
  • 如果该节点有右子节点,将右子节点入队列。

 

3.总结

层次遍历是一种直观且常用的遍历二叉树的方法,它从根节点开始,逐层访问每个节点,确保按照层次顺序输出节点的值。通过使用队列,我们可以轻松实现这一遍历算法。

希望这篇简短的博客能够帮助你理解二叉树的层次遍历算法。如果有任何疑问或建议,请随时提出

相关文章
|
5月前
|
存储 算法 编译器
技术经验解读:二叉树的遍历:先序中序后序遍历的递归与非递归实现及层序遍历
技术经验解读:二叉树的遍历:先序中序后序遍历的递归与非递归实现及层序遍历
38 0
|
6月前
|
存储 算法 IDE
数据结构与算法⑯(第四章_下)二叉树的层序遍历+判断完全二叉树+一道OJ
数据结构与算法⑯(第四章_下)二叉树的层序遍历+判断完全二叉树+一道OJ
53 1
|
5月前
|
存储 算法
数据结构和算法学习记录——二叉树的非递归遍历(中序遍历、先序遍历、后序遍历)
数据结构和算法学习记录——二叉树的非递归遍历(中序遍历、先序遍历、后序遍历)
25 0
|
6月前
|
存储 算法
【数据结构与算法】8.二叉树的基本概念|前序遍历|中序遍历|后序遍历
【数据结构与算法】8.二叉树的基本概念|前序遍历|中序遍历|后序遍历
|
6月前
|
算法
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
96 0
|
存储 算法 前端开发
前端算法-前序遍历二叉树
前端算法-前序遍历二叉树
|
前端开发
前端知识案例-二叉树的遍历(前序 中序 后序)
前端知识案例-二叉树的遍历(前序 中序 后序)
70 0
前端知识案例-二叉树的遍历(前序 中序 后序)
【数据结构与算法】详解二叉树以及模拟实现二叉树
二叉树在学习数据结构中是一种很重要的类型,也是学习数据结构中比较困难的一种结构,但是在平时用的也是非常多,因此二叉树尤为重要. 本篇文章中会涉及到大量的递归代码,如果一些地方不太理解,可以尝试画图梳理代码执行流程 关于文章中的二叉树源码→点击即可跳转 需要的可以去看一看
|
存储 算法
【数据结构与算法】第十二章:线索化二叉树
在二叉树的一些应用中,常常要求在数中查找具有某种特征的结点,或者是对树中的全部结点逐一进行处理,这就提出了一个遍历二叉树的问题。本章将详细介绍二叉树的存储和遍历。
173 0
【数据结构与算法】第十二章:线索化二叉树
|
存储 算法 关系型数据库
重温算法之二叉树的锯齿形层序遍历
关于二叉树的题目其实是我的弱项,虽然二叉树不是很难理解,但是从学校开始接触二叉树开始就对它不是很感冒,所以很多时候都避开它,但是再难咬的骨头也的得啃,二叉树运用在很多程序的底层实现里,比如MySQL的索引实现就是B+树,我们懂得使用索引的同时也得知道,索引为什么这么快,而其快的原因就是底层里B+树得实现。
108 0
重温算法之二叉树的锯齿形层序遍历