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,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7] [9,20], [3], ]
和I差不多,只是需要把最后遍历结果数组翻转一下
/**
* 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) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
vector<vector<int> >res;
if(root == NULL)return res;
queue<TreeNode*> myqueue;
myqueue.push(root);
myqueue.push(NULL);//NULL是层与层之间间隔标志
vector<int> level;
while(myqueue.empty() == false)
{
TreeNode *p = myqueue.front();
myqueue.pop();
if(p != NULL)
{
level.push_back(p->val);
if(p->left)myqueue.push(p->left);
if(p->right)myqueue.push(p->right);
}
else
{
res.push_back(level);
if(myqueue.empty() == false)
{
level.clear();
myqueue.push(NULL);
}
}
}
reverse(res.begin(), res.end());
return res;
}
};