题目描述

代码
public class Code_107 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> list = new ArrayList<>();
if (root == null) return list;
orderBottom(root, list, 1);
Collections.reverse(list);
return list;
}
public void orderBottom(TreeNode root, List<List<Integer>> res, int index) {
if (root == null) return;
if (index>res.size()){
res.add(new ArrayList<>());
}
res.get(index-1).add(root.val);
orderBottom(root.left,res,index+1);
orderBottom(root.right,res,index+1);
}
}
思路
- 由上往下遍历,最后反转Collections.reverse(list);
- 遍历过程加一个标志位,通过标志位扩容index>res.size()
- 采用递归遍历