L102 Binary Tree Level Order Traversal
BFS
Problem
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example: Given binary tree [3,9,20,null,null,15,7]
Solution
BFS TC: O(n) SC: O(n)
public <List<List<TreeNode>> levelOrder(TreeNode root){
List<List<TreeNode>> res = new ArrayList<>();
if(root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size;
List<TreeNode> list = new ArrayList<>();
for(int i = 0; i < size; i++){
TreeNode node = queue.poll();
list.add(node);
if(node.left != null) queue.offer(node.left);
if(node.right != null) queue.offer(node.right);
}
res.add(list);
}
return res;
}
2. return all the node value most right;
public <List<List<TreeNode>> levelOrder(TreeNode root){
List<List<TreeNode>> res = new ArrayList<>();
if(root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size;
List<TreeNode> list = new ArrayList<>();
for(int i = 0; i < size; i++){
TreeNode node = queue.poll();
if(node.left != null) queue.offer(node.left);
if(node.right != null) queue.offer(node.right);
if(i == size -1 ) list.add(node);////////
}
res.add(list);
}
return res;
}
Last updated
Was this helpful?