Binary Tree Level Order Traversal II
Given a binary tree, return the bottom-uplevel order traversal of its nodes' values. (ie, from left to right, level bylevel from leaf to root).
For example:
return its bottom-up level order traversalas:
这题是No.102的二号题,真不是我偷懒,我也不知道要怎么说了。
其实只要在No.102的代码某处加上reverse(xxx.begin(), xxx.end());(xxx是所求的结果二维数组vector<vector<int>>)就是最方便的解法了。就在我们曾经写过的算法上加一句而已。
代码
/**
* 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>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> res;
if(NULL == root) return res;
vector<int> temp;
res.push_back(temp);
int lv = 0;
Lv(root, lv, res);
reverse(res.begin(), res.end());//这句是加的
return res;
}
void Lv(TreeNode* root, int lv, vector<vector<int>>& res) {
if(NULL == root) return;
int thisLv = lv;
if(lv >= res.size())
{
vector<int> temp;
res.push_back(temp);
}
res[lv].push_back(root->val);
Lv(root->left, lv + 1, res);
Lv(root->right, lv + 1, res);
}
};
2015-07-25