File tree Expand file tree Collapse file tree 2 files changed +143
-0
lines changed Expand file tree Collapse file tree 2 files changed +143
-0
lines changed Original file line number Diff line number Diff line change
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
+ ```
Original file line number Diff line number Diff line change
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
+ ```
You can’t perform that action at this time.
0 commit comments