Skip to content

Commit 369d67b

Browse files
authored
Merge pull request gzc426#331 from beddingearly/master
1
2 parents e9f8861 + 8b9cc89 commit 369d67b

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
```java
2+
/**
3+
* Definition for a binary tree node.
4+
* public class TreeNode {
5+
* int val;
6+
* TreeNode left;
7+
* TreeNode right;
8+
* TreeNode(int x) { val = x; }
9+
* }
10+
*/
11+
import java.util.*;
12+
class Solution {
13+
public List<List<Integer>> levelOrder(TreeNode root) {
14+
if (root == null){
15+
return new ArrayList<>();
16+
}
17+
List<List<Integer>> list = new ArrayList<>();
18+
List<Integer> tmp = new ArrayList<>();
19+
ArrayDeque<TreeNode> d = new ArrayDeque<>();
20+
tmp.add(root.val);
21+
list.add(new ArrayList<>(tmp));
22+
tmp.clear();
23+
if (root.left != null){
24+
d.addFirst(root.left);
25+
}
26+
if (root.right != null){
27+
d.addFirst(root.right);
28+
}
29+
int level = d.size();
30+
while (!d.isEmpty()){
31+
TreeNode node = d.pollLast();
32+
tmp.add(node.val);
33+
level--;
34+
if (node.left != null){
35+
d.addFirst(node.left);
36+
}
37+
if (node.right != null){
38+
d.addFirst(node.right);
39+
}
40+
if (level == 0){
41+
if (!tmp.isEmpty())
42+
list.add(new ArrayList<>(tmp));
43+
level = d.size();
44+
tmp.clear();
45+
}
46+
}
47+
return list;
48+
}
49+
}
50+
```
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
```java
2+
/**
3+
* Definition for a binary tree node.
4+
* public class TreeNode {
5+
* int val;
6+
* TreeNode left;
7+
* TreeNode right;
8+
* TreeNode(int x) { val = x; }
9+
* }
10+
*/
11+
import java.util.*;
12+
13+
class Solution {
14+
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
15+
List<List<Integer>> list = new ArrayList<>();
16+
if (root == null){
17+
return list;
18+
}
19+
ArrayDeque<TreeNode> d = new ArrayDeque<>();
20+
ArrayList<Integer> tmp = new ArrayList<>();
21+
d.addFirst(root);
22+
tmp.add(root.val);
23+
int flag = 0;
24+
tmp.clear();
25+
int level = 1;
26+
while (!d.isEmpty()){
27+
TreeNode node = d.pollLast();
28+
tmp.add(node.val);
29+
level --;
30+
if (node.left != null){
31+
d.addFirst(node.left);
32+
}
33+
if (node.right != null){
34+
d.addFirst(node.right);
35+
}
36+
if (level == 0){
37+
if (flag == 0){
38+
flag = 1;
39+
}
40+
else if (flag == 1){
41+
Collections.reverse(tmp);
42+
flag = 0;
43+
}
44+
list.add(new ArrayList<>(tmp));
45+
level = d.size();
46+
tmp.clear();
47+
}
48+
}
49+
return list;
50+
}
51+
}
52+
```
53+
54+
```python
55+
from collections import deque
56+
class Solution(object):
57+
def zigzagLevelOrder(self, root):
58+
"""
59+
:type root: TreeNode
60+
:rtype: List[List[int]]
61+
"""
62+
if root == None:
63+
return []
64+
elif root.right == None and root.left == None:
65+
return [[root.val]]
66+
d = deque([])
67+
result = [[root.val]]
68+
d.appendleft(root.left)
69+
d.appendleft(root.right)
70+
flag = 0
71+
level = 2
72+
tmp = []
73+
while len(d) != 0:
74+
node = d.pop()
75+
level -= 1
76+
if node != None:
77+
tmp.append(node.val)
78+
if node.left != None:
79+
d.appendleft(node.left)
80+
if node.right != None:
81+
d.appendleft(node.right)
82+
if level == 0:
83+
if flag == 1:
84+
result.append(tmp)
85+
flag = 0
86+
else:
87+
tmp.reverse()
88+
result.append(tmp)
89+
flag = 1
90+
tmp = []
91+
level = len(d)
92+
return result
93+
```

0 commit comments

Comments
 (0)