这是题目
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3]
看完答案后,仿照着写了一下,发现提交的是没有括号的
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
auto level0order=vector<vector<int>>();
if(!root) return level0order;
queue<TreeNode*> q;
q.push(root);
int size=q.size();
while(!q.empty())
{
auto node=q.front();
auto level=vector<int>();
for(int i=0;i<size;i++)
{
level.push_back(node->val);
q.pop();
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);}
level0order.push_back(level);
}
reverse(level0order.begin(),level0order.end());
return level0order;
}
};
修改了
int size=q.size();
auto node=q.front();
也就是和官方答案的位置不一样
/** * 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) { auto level0order=vector<vector<int>>(); if(!root) return level0order; queue<TreeNode*> q; q.push(root); while(!q.empty()) { int size=q.size(); auto level=vector<int>(); for(int i=0;i<size;i++) { auto node=q.front(); level.push_back(node->val); q.pop(); if(node->left) q.push(node->left); if(node->right) q.push(node->right);} level0order.push_back(level); } reverse(level0order.begin(),level0order.end()); return level0order; }};