Skip to content

Commit b3c8c19

Browse files
committed
Java solution 103 && 144
1 parent a4d7a0f commit b3c8c19

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import java.util.ArrayList;
2+
import java.util.LinkedList;
3+
import java.util.List;
4+
5+
/**
6+
* Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
7+
* <p>
8+
* For example:
9+
* Given binary tree [3,9,20,null,null,15,7],
10+
* 3
11+
* / \
12+
* 9 20
13+
* / \
14+
* 15 7
15+
* return its zigzag level order traversal as:
16+
* [
17+
* [3],
18+
* [20,9],
19+
* [15,7]
20+
* ]
21+
* <p>
22+
* Created by drfish on 6/7/2017.
23+
*/
24+
public class _103BinaryTreeZigzagLevelOrderTraversal {
25+
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
26+
List<List<Integer>> result = new ArrayList<>();
27+
List<TreeNode> curr = new ArrayList<>();
28+
boolean isOdd = true;
29+
30+
if (root == null) {
31+
return result;
32+
}
33+
curr.add(root);
34+
35+
while (!curr.isEmpty()) {
36+
List<TreeNode> next = new ArrayList<>();
37+
List<Integer> level = new LinkedList<>();
38+
for (TreeNode node : curr) {
39+
if (node.left != null) {
40+
next.add(node.left);
41+
}
42+
if (node.right != null) {
43+
next.add(node.right);
44+
}
45+
if (isOdd) {
46+
level.add(node.val);
47+
} else {
48+
level.add(0, node.val);
49+
}
50+
}
51+
isOdd = !isOdd;
52+
result.add(level);
53+
curr = next;
54+
}
55+
return result;
56+
}
57+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
import java.util.Stack;
4+
5+
/**
6+
* Given a binary tree, return the preorder traversal of its nodes' values.
7+
* <p>
8+
* For example:
9+
* Given binary tree {1,#,2,3},
10+
* 1
11+
* \
12+
* 2
13+
* /
14+
* 3
15+
* return [1,2,3].
16+
* <p>
17+
* Note: Recursive solution is trivial, could you do it iteratively?
18+
* Created by drfish on 6/8/2017.
19+
*/
20+
public class _144BinaryTreePreorderTraversal {
21+
public List<Integer> preorderTraversal(TreeNode root) {
22+
List<Integer> result = new ArrayList<>();
23+
Stack<TreeNode> stack = new Stack<>();
24+
while (root != null || !stack.isEmpty()) {
25+
while (root != null) {
26+
result.add(root.val);
27+
stack.push(root);
28+
root = root.left;
29+
}
30+
root = stack.pop();
31+
root = root.right;
32+
}
33+
return result;
34+
}
35+
}

0 commit comments

Comments
 (0)