这一类题都是一个套路。跟之前的Zigzag没什么太大的区别,把Zigzag的代码拿来改一下就能用了。不需要之字形层次遍历了,直接顺序存放即可。从顶向底遍历,
然后reverse一下即可。
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int> > levelOrderBottom(TreeNode *root) {
if(root==NULL)
return vector<vector<int> >();
vector<vector<int> > res;
vector<TreeNode *> v1;
vector<TreeNode *> v2;
v1.push_back(root);
while(!v1.empty()){
res.push_back(vector<int>());
for(int i=0;i<v1.size();++i)
res.back().push_back(v1[i]->val);
for(int i=0;i<v1.size();++i){
if(v1[i]->left)
v2.push_back(v1[i]->left);
if(v1[i]->right)
v2.push_back(v1[i]->right);
}
v1.swap(v2);
v2.clear();
}
vector<vector<int> > result(res.rbegin(),res.rend());
return result;
}
};