Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
题目:给定一颗二叉树,返回从底向上的层次遍历顺序。
思路:根据二叉树层次遍历这道题,因此从底向上的层次遍历只需要将那道题的结果reverse一下就可以了。即增加一行代码:reverse(ret.begin(),ret.end())
代码:
class Solution {
public:
vector<vector<int> > levelOrderBottom(TreeNode* root) {
vector<vector<int> > ret;
queue<TreeNode*> q;
if(!root)
return ret;
q.push(root);
while(!q.empty()){
vector<int> temp;
int size = q.size();
for(;size>0;size--){
TreeNode* node = q.front();
temp.push_back(node->val);
q.pop();
if(node->left)
q.push(node->left);
if(node->right)
q.push(node->right);
}
ret.push_back(temp);
}
reverse(ret.begin(),ret.end());//增加的一行代码,将二叉树从上往下层次遍历的结果reverse一下就可以了
return ret;
}
};
AC,beats98%