题目

  • 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

示例

  • 示例1
  • 给定二叉树: [3,9,20,null,null,15,7]
    3
   / \
  9  20
    /  \
   15   7
  • 返回:
[
  [3],
  [9,20],
  [15,7]
]

代码

  • 递归层次遍历
class Solution {
    List<List<Integer>> list = new ArrayList<>();
    public List<List<Integer>> levelOrder(TreeNode root) {
        dfs(root,0);
        return list;
    }
    public void dfs(TreeNode root,int level){
        if(root == null)    return;
        if(list.size() <= level) // 深度小于等于本层深度
            list.add(new ArrayList());
        list.get(level).add(root.val);
        dfs(root.left,level+1);
        dfs(root.right,level+1);
    }
}

代码分析if(list.size() <= level)深度小于等于本层深度才添加进去,避免把最后一层为空的时候也添加进去了。

  • 其他方法

本文题目cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof

最后修改:2022 年 01 月 12 日 11 : 03 AM
如果我的文章对你有用,请随意赞赏