题意:之字形遍历树。
思路:BFS,注意奇数层和偶数层不同的遍历方向。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int> > re;
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
vector<TreeNode*> t;
t.push_back(root);
bfs(t, 0);
return re;
}
void bfs(vector<TreeNode*> p, int level) {
if(p.size() == 0) return;
vector<TreeNode*> temp;
vector<int> tempre;
for(int i = 0; i < p.size(); ++ i) {
if(p[i] == NULL) continue;
temp.push_back(p[i]->left);
temp.push_back(p[i]->right);
}
if(level % 2 == 0) {
for(int i = 0; i < p.size(); ++ i) {
if(p[i] == NULL) continue;
tempre.push_back(p[i]->val);
}
}
else {
for(int i = p.size() - 1; i >=0; i --) {
if(p[i] == NULL) continue;
tempre.push_back(p[i]->val);
}
}
if(tempre.size() == 0) return;
re.push_back(tempre);
bfs(temp, level + 1);
return;
}
};