题目大意:就是将二叉树每一层的节点内容反向输出!
在实现的时候可以直接使用层次遍历的方式即可,然后将层次遍历的结果进行一个逆转。因为在C++语言中的 vector的容器在这方面上使用起来非常方便。
层次遍历的实现是非常简单,首先需要将根节点记录到队列中,然后开始遍历求解,针对于其中当前的列表的长度,每次循环全部的内容,将当前的列表的内容不是空的直接加入即可!
/**
* 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(!root) return res;
queue<TreeNode*> Q;
if(root) Q.push(root);
while(!Q.empty()) {
int size = Q.size();
vector<int> path;
for(int i=0; i < size ; ++i) {
TreeNode* q = Q.front();
path.push_back(q->val);
if(q->left != NULL) Q.push(q->left);
if(q->right != NULL) Q.push(q->right);
Q.pop();
}
res.push_back(path);
}
vector<vector<int>>ans;
for(auto i = res.crbegin(); i != res.crend(); ++i) {
ans.push_back(*i);
}
// res.reverse(); 没有这个功能!
return ans;
}
};