Skip to content

Commit 77f9d96

Browse files
committed
Learned a lot for today's mock interview
1 parent 8de55d8 commit 77f9d96

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Diff for: Binary Tree Zigzag Level Order Traversal.cpp

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
};

0 commit comments

Comments
 (0)