107. Binary Tree Level Order Traversal II
BFS by using queue/linkedlist, dfs using recursion
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
LinkedList<List<Integer>> result = new LinkedList<>();
if(root == null) return result;
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> list = new LinkedList<>();
for(int i = 0; i<size; i++){
root = queue.poll();
list.add(root.val);
if(root.left!=null) queue.offer(root.left);
if(root.right!=null) queue.offer(root.right);
}
result.addFirst(list);
}
return result;
}
}
class Solution {
int depth = -1;
public List<List<Integer>> levelOrderBottom(TreeNode root) {
LinkedList<List<Integer>> result = new LinkedList<>();
recursion(result, root, 0);
return result;
}
private void recursion(LinkedList<List<Integer>> list, TreeNode node, int level){
if (node == null) return;
// preOrder
if(level>depth){
list.addFirst(new LinkedList<Integer>());
list.get(0).add(node.val);
depth = level;
}else{
list.get(depth-level).add(node.val);
}
level++;
recursion(list, node.left, level);
recursion(list, node.right, level);
}
}
Last updated
Was this helpful?