LeetCode_刷题(层次遍历)

115 阅读1分钟

这是题目

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [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;    }};