Binary Tree Level Order Traversal — BFS Queue
Advertisement
Problem 361 · Binary Tree Level Order Traversal
Difficulty: Medium · Pattern: BFS Level Order
Solutions
# Python
from collections import deque
def levelOrder(root):
if not root: return []
queue = deque([root]); result = []
while queue:
level = []
for _ in range(len(queue)):
node = queue.popleft()
level.append(node.val)
if node.left: queue.append(node.left)
if node.right: queue.append(node.right)
result.append(level)
return result
// Java
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res=new ArrayList<>();
if (root==null) return res;
Queue<TreeNode> q=new LinkedList<>(); q.offer(root);
while (!q.isEmpty()) {
int sz=q.size(); List<Integer> level=new ArrayList<>();
while (sz-->0) {
TreeNode n=q.poll(); level.add(n.val);
if(n.left!=null) q.offer(n.left);
if(n.right!=null) q.offer(n.right);
}
res.add(level);
}
return res;
}
Complexity
- Time: O(n)
- Space: O(w) where w = max width
Advertisement