Skip to content

Commit 75a8413

Browse files
authored
Create main.cpp
1 parent a4bf4ba commit 75a8413

File tree

1 file changed

+45
-0
lines changed
  • 17 - Binary Tree Data Structure Problems/13 - Binary Tree Zigzag Level Order Traversal

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
15+
vector<vector<int>> result;
16+
if(root == NULL) return result;
17+
18+
queue<TreeNode*> q;
19+
q.push(root);
20+
21+
bool LTR = true;
22+
23+
while(!q.empty()){
24+
int size = q.size();
25+
vector<int> ans(size);
26+
27+
for(int i = 0; i < size; i++){
28+
TreeNode* frontNode = q.front();
29+
q.pop();
30+
31+
int index = LTR ? i : size - i - 1;
32+
ans[index] = frontNode -> val;
33+
34+
if(frontNode -> left) q.push(frontNode -> left);
35+
if(frontNode -> right) q.push(frontNode -> right);
36+
}
37+
38+
LTR = !LTR;
39+
40+
result.push_back(vector<int>(ans.begin(), ans.end()));
41+
}
42+
43+
return result;
44+
}
45+
};

0 commit comments

Comments
 (0)