102. Binary Tree Level Order Traversal
BFS iteration: FIFO queue
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//BFS soltion using FIFO queue
//linkedlist implementation of queue
Queue<TreeNode> queue =new LinkedList<>();
List<List<Integer>> result = new LinkedList<>();
if (root==null) return result;
queue.add(root);
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> list = new LinkedList<>();
while(size-->0){
// retrive and remove the first element of queue : queue.poll();
root = queue.poll();
list.add(root.val);
if (root.left!=null) queue.add(root.left);
if (root.right!=null) queue.add(root.right);
}
result.add(list);
}
return result;
}
}
recursion
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
recursion(result, root, 0);
return result;
}
private void recursion(List<List<Integer>> list, TreeNode root, int depth){
if(root == null) return;
if(list.size()<=depth){
list.add(new LinkedList<Integer>());
}
// remember: list.get(int index) method
list.get(depth).add(root.val);
recursion(list, root.left, depth+1);
recursion(list, root.right, depth+1);
}
}
Last updated
Was this helpful?