Skip to content

Commit 75171a3

Browse files
solves binary tree level order traversal in java
1 parent ea4643a commit 75171a3

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
| 99 | [Recover Binary Search Tree](https://leetcode.com/problems/recover-binary-search-tree) | | |
9494
| 100 | [Same Tree](https://leetcode.com/problems/same-tree) | [![Java](assets/java.png)](src/SameTree.java) [![Python](assets/python.png)](python/same_tree.py) | |
9595
| 101 | [Symmetric Tree](https://leetcode.com/problems/symmetric-tree) | [![Java](assets/java.png)](src/SymmetricTree.java) [![Python](assets/python.png)](python/symmetric_tree.py) | |
96-
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal) | | |
96+
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal) | [![Java](assets/java.png)](src/BinaryTreeLevelOrderTraversal.java) | |
9797
| 103 | [Binary Tree Zigzag Level Order Traversal](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal) | | |
9898
| 104 | [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree) | [![Java](assets/java.png)](src/MaximumDepthOfBinaryTree.java) [![Python](assets/python.png)](python/maximum_depth_of_binary_tree.py) | |
9999
| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal) | | |
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// https://leetcode.com/problems/binary-tree-level-order-traversal
2+
// T: O(n)
3+
// S: O(n)
4+
5+
import java.util.ArrayList;
6+
import java.util.LinkedList;
7+
import java.util.List;
8+
import java.util.Queue;
9+
10+
public class BinaryTreeLevelOrderTraversal {
11+
public List<List<Integer>> levelOrder(TreeNode root) {
12+
if (root == null) {
13+
return List.of();
14+
}
15+
16+
final Queue<TreeNode> queue = new LinkedList<>();
17+
queue.add(root);
18+
queue.add(null);
19+
final List<List<Integer>> result = new ArrayList<>();
20+
List<Integer> level = new ArrayList<>();
21+
22+
while (!queue.isEmpty()) {
23+
TreeNode current = queue.poll();
24+
if (current == null) {
25+
result.add(level);
26+
if (!queue.isEmpty()) {
27+
queue.add(null);
28+
level = new ArrayList<>();
29+
}
30+
} else {
31+
level.add(current.val);
32+
if (current.left != null) queue.add(current.left);
33+
if (current.right != null) queue.add(current.right);
34+
}
35+
}
36+
return result;
37+
}
38+
}

0 commit comments

Comments
 (0)