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] ]
解题思路:要求按照层次来遍历二叉树,与102处理过程一致,但是通过用inverse迭代器复制构造新的函数完成。
/** * 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: void getResult(vector<vector<int> >&result,TreeNode* root,int l) { if(l==result.size()) { vector<int> temp; result.push_back(temp); } result[l].push_back(root->val); if(root->left != NULL) getResult(result,root->left,l+1); if(root->right != NULL) getResult(result,root->right,l+1); } vector<vector<int> > levelOrderBottom(TreeNode* root) { //用一个level来规定层数,这样可以保证同一层的在一个vector里面 vector<vector<int> > result; if(root == NULL) return result; getResult(result,root,0); vector<vector<int> > result1(result.rbegin(),result.rend()); return result1; } };