File tree 1 file changed +39
-0
lines changed
1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ // set a boolean flag to control the order
2
+
3
+
4
+ class Solution {
5
+ public:
6
+ vector<vector<int > > zigzagLevelOrder (TreeNode *root) {
7
+ vector<vector<int > > result;
8
+ if (!root) return result;
9
+
10
+ queue<TreeNode *> curr;
11
+ vector<int > level;
12
+ bool ordered = true ;
13
+ curr.push (root);
14
+ curr.push (NULL ); // NULL seperator between levels
15
+
16
+ while (!curr.empty ()){
17
+ TreeNode *head = curr.front ();
18
+ curr.pop ();
19
+ if (head){
20
+ level.push_back (head ->val );
21
+ if (head -> left) curr.push (head -> left);
22
+ if (head -> right) curr.push (head -> right);
23
+ }else { // decide the order
24
+ if (ordered){
25
+ result.push_back (level);
26
+ }else {
27
+ reverse (level.begin (), level.end ());
28
+ result.push_back (level);
29
+ }
30
+ level.clear ();
31
+ ordered = ! ordered;
32
+ if (curr.size () > 0 ) curr.push (NULL );
33
+ }
34
+ }
35
+
36
+ return result;
37
+
38
+ }
39
+ };
You can’t perform that action at this time.
0 commit comments