从上到下打印二叉树
二叉树
题目
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
注意:本题与主站 102 题相同:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
Related Topics
树
广度优先搜索
二叉树
👍 293
👎 0
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
}
}
思路
- 递归
- 如果当前节点为空,推出递归
- 当前层级是否存在,存在就添加,不存在,新建并添加
- 递归左节点,右节点
实现
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res= new ArrayList<>();
method(res,1,root);
return res;
}
private void method(List<List<Integer>> res,int level,TreeNode node){
if (node==null)return;
if (res.size()>level-1){
List<Integer> list = res.get(level-1);
list.add(node.val);
}
else {
List<Integer> list =new ArrayList<>();
list.add(node.val);
res.add(level-1,list);
}
method(res,level+1,node.left);
method(res,level+1,node.right);
}
}
结果
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:41 MB,击败了82.25% 的Java用户