Skip to content

Commit 5a145d2

Browse files
authored
Create MQQM.cpp
1 parent c44d577 commit 5a145d2

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

2018.12.06-leetcode103/MQQM.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
题目:
3+
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
4+
5+
做法:判断是奇数层还是偶数层。
6+
*/
7+
8+
/**
9+
* Definition for a binary tree node.
10+
* struct TreeNode {
11+
* int val;
12+
* TreeNode *left;
13+
* TreeNode *right;
14+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
15+
* };
16+
*/
17+
class Solution {
18+
public:
19+
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
20+
vector<vector<int>> rst;
21+
if(root==NULL){
22+
return rst;
23+
}
24+
25+
queue<TreeNode*> que;
26+
que.push(root);
27+
bool even=false;
28+
while( !que.empty() ){
29+
int len=que.size();
30+
31+
vector<int> levelvec;
32+
for(int i=0; i<len; i++){
33+
TreeNode* p=que.front();
34+
que.pop();
35+
levelvec.push_back(p->val);
36+
37+
if(p->left != NULL){
38+
que.push(p->left);
39+
}
40+
if(p->right != NULL){
41+
que.push(p->right);
42+
}
43+
}
44+
45+
if(even){//偶数层
46+
reverse(levelvec.begin(), levelvec.end());
47+
even=false;
48+
}else{
49+
even=true;
50+
}
51+
rst.push_back(levelvec);
52+
}
53+
54+
return rst;
55+
}
56+
};

0 commit comments

Comments
 (0)