leetcode代码

107二叉树层序遍历

class Solution {
public:
    void dsf(TreeNode* root,vector<vector<int>>& v,int level){
        if(!root)
            return;
        if(level==v.size())
            v.push_back({});
        v[level].push_back(root->val);
        dsf(root->left,v,level+1);
        dsf(root->right,v,level+1);
    }
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector<vector<int>>v;
        dsf(root,v,0);
        reverse(v.begin(),v.end());
        return v;
    }
};

class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector<vector<int>> res;
        if(root == NULL) return res;
        queue<TreeNode*> que;
        que.push(root);
        while(!que.empty()){
            int sz = que.size();
            vector<int> vec;
            for(int i = 0; i < sz; ++i){
                TreeNode *node = que.front();
                vec.push_back(node->val);
                if(node->left) que.push(node->left);
                if(node->right) que.push(node->right);
                que.pop();
            }
            res.push_back(vec);
        }
        reverse(res.begin(), res.end());
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_28660653/article/details/83820665