102.二叉树的层序遍历——二叉树专题复习

迭代方式:

java 复制代码
class Solution {
    // 定义一个成员变量res来存储层序遍历的结果
    List<List<Integer>> res = new ArrayList<>();
    
    // levelOrder方法是层序遍历的接口,它接受一个二叉树的根节点root
    public List<List<Integer>> levelOrder(TreeNode root) {
        // 如果根节点为空,则层序遍历的结果为空列表
        if (root == null) return res;
        
        // dfs方法是一个递归方法,用于执行深度优先搜索
        dfs(root, 0); // 初始调用,level为0,代表第一层
        
        // 返回存储层序遍历结果的列表res
        return res;
    }
    
    // dfs方法是递归函数,用于遍历二叉树的每一层
    // root表示当前遍历到的节点,level表示当前的层级
    public void dfs(TreeNode root, int level) {
        // 如果当前节点为空,则直接返回
        if (root == null) return;
        
        // 如果当前层还没有被访问过,则创建一个新的列表来存储该层的数据
        if (level == res.size()) res.add(new ArrayList<Integer>());
        
        // 将当前节点的值添加到对应层级的列表中
        res.get(level).add(root.val);
        
        // 递归遍历左子树,层级加1
        dfs(root.left, level + 1);
        
        // 递归遍历右子树,层级加1
        dfs(root.right, level + 1);
    }
}

递归方式:

java 复制代码
class Solution {
    // 定义一个成员变量res来存储层序遍历的结果
    List<List<Integer>> res = new ArrayList<>();
    
    // levelOrder方法是层序遍历的接口,它接受一个二叉树的根节点root
    public List<List<Integer>> levelOrder(TreeNode root) {
        // 如果根节点为空,则层序遍历的结果为空列表
        if (root == null) return res;
        
        // dfs方法是一个递归方法,用于执行深度优先搜索
        dfs(root, 0); // 初始调用,level为0,代表第一层
        
        // 返回存储层序遍历结果的列表res
        return res;
    }
    
    // dfs方法是递归函数,用于遍历二叉树的每一层
    // root表示当前遍历到的节点,level表示当前的层级
    public void dfs(TreeNode root, int level) {
        // 如果当前节点为空,则直接返回
        if (root == null) return;
        
        // 如果当前层还没有被访问过,则创建一个新的列表来存储该层的数据
        if (level == res.size()) res.add(new ArrayList<Integer>());
        
        // 将当前节点的值添加到对应层级的列表中
        res.get(level).add(root.val);
        
        // 递归遍历左子树,层级加1
        dfs(root.left, level + 1);
        
        // 递归遍历右子树,层级加1
        dfs(root.right, level + 1);
    }
}
相关推荐
mit6.8246 分钟前
youtube图论
c++·算法
保持学习ing8 分钟前
day4--上传图片、视频
java·大数据·数据库·文件上传·minio·分布式文件系统·文件存储
DoraBigHead22 分钟前
🧠 小哆啦解题记 —— 谁偷走了我的快乐?
算法
亲爱的非洲野猪22 分钟前
Spring Cloud Gateway介绍 - -基础概念,简单工作原理和配置示例
java·spring boot·gateway
想躺平的咸鱼干33 分钟前
JVM的垃圾回收算法和多种GC算法
java·jvm·算法·垃圾回收算法·jvm体系结构
满分观察网友z44 分钟前
从 Null 到 Next:我如何用 O(1) 空间“点亮”了 UI 树的导航路径(117. 填充每个节点的下一个右侧节点指针 II)
后端·算法
小雪_Snow1 小时前
final 关键字使用场景
java
Murphy_lx1 小时前
较为深入的了解c++中的string类(2)
java·c++·算法
一只鱼^_3 小时前
牛客周赛 Round 99
java·数据结构·c++·算法·贪心算法·动态规划·近邻算法
玩代码4 小时前
CompletableFuture 详解
java·开发语言·高并发·线程