1. 思路
(1)使用 list 实现队列,控制进出,从上到下,找出每一层,添加, list.add(0, listLevel)。(BFS)
(2)DFS,先建好每一层的list,然后插入元素值。
2. 实现
2.1 dfs
class Solution {
List<List<Integer>> list = new LinkedList<>();
public List<List<Integer>> levelOrderBottom(TreeNode root) {
dfsLevel(root, 0);
return list;
}
public void dfsLevel(TreeNode node, int level){
if(node == null){
return;
}
if(level >= list.size()){
list.add(0, new LinkedList<Integer>());
}
dfsLevel(node.left, level+1);
dfsLevel(node.right, level+1);
list.get(list.size()-1-level).add(node.val); //list.size = sumLevel, 每一个节点属于那一层都是已经记录的,即 level
}
}