Skip to content

Commit b1863cf

Browse files
solves #103 in java
1 parent 1b2d649 commit b1863cf

File tree

3 files changed

+57
-8
lines changed

3 files changed

+57
-8
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595
| 100 | [Same Tree](https://leetcode.com/problems/same-tree) | [![Java](assets/java.png)](src/SameTree.java) [![Python](assets/python.png)](python/same_tree.py) | |
9696
| 101 | [Symmetric Tree](https://leetcode.com/problems/symmetric-tree) | [![Java](assets/java.png)](src/SymmetricTree.java) [![Python](assets/python.png)](python/symmetric_tree.py) | |
9797
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal) | [![Java](assets/java.png)](src/BinaryTreeLevelOrderTraversal.java) | |
98-
| 103 | [Binary Tree Zigzag Level Order Traversal](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal) | | |
98+
| 103 | [Binary Tree Zigzag Level Order Traversal](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal) | [![Java](assets/java.png)](src/BinaryTreeZigzagLevelOrderTraversal.java) | |
9999
| 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) | |
100100
| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal) | | |
101101
| 106 | [Construct Binary Tree from Inorder and Postorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal) | | |

Diff for: src/BinaryTreeZigzagLevelOrderTraversal.java

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal
2+
// T: O(n)
3+
// S: O(n)
4+
5+
import java.util.ArrayList;
6+
import java.util.Collections;
7+
import java.util.LinkedList;
8+
import java.util.List;
9+
import java.util.Queue;
10+
11+
public class BinaryTreeZigzagLevelOrderTraversal {
12+
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
13+
if (root == null) return Collections.EMPTY_LIST;
14+
15+
final List<List<Integer>> result = new ArrayList<>();
16+
final Queue<TreeNode> queue = new LinkedList<>();
17+
queue.add(root);
18+
queue.add(null);
19+
20+
List<Integer> level = new ArrayList<>();
21+
22+
while (!queue.isEmpty()) {
23+
final TreeNode current = queue.poll();
24+
if (current == null) {
25+
result.add(level);
26+
level = new LinkedList<>();
27+
if (!queue.isEmpty()) {
28+
queue.add(null);
29+
}
30+
continue;
31+
}
32+
level.add(current.val);
33+
addChildrenInQueue(queue, current);
34+
}
35+
36+
zigZagOrder(result);
37+
return result;
38+
}
39+
40+
private void zigZagOrder(List<List<Integer>> levels) {
41+
for (int i = 1 ; i < levels.size() ; i += 2) {
42+
Collections.reverse(levels.get(i));
43+
}
44+
}
45+
46+
private void addChildrenInQueue(Queue<TreeNode> queue, TreeNode root) {
47+
if (root.left != null) queue.add(root.left);
48+
if (root.right != null) queue.add(root.right);
49+
}
50+
}

Diff for: src/HelloWorld.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1+
import java.util.ArrayList;
2+
import java.util.Collections;
3+
import java.util.List;
4+
15
public class HelloWorld {
26
public static void main(String[] args) {
3-
Trie trie = new Trie();
4-
trie.insert("apple");
5-
// System.out.println(trie.search("apple"));
6-
// System.out.println(trie.search("app"));
7-
System.out.println(trie.startsWith("app")); // true
8-
trie.insert("app");
9-
// System.out.println(trie.search("app"));
7+
List<Integer> list = new ArrayList<>();
8+
Collections.reverse(list);
109
}
1110
}

0 commit comments

Comments
 (0)