Day125 | 灵神 | 二叉树 | 二叉树中的第K大层和

Day125 | 灵神 | 二叉树 | 二叉树中的第K大层和

2583.二叉树中的第K大层和

2583. 二叉树中的第 K 大层和 - 力扣(LeetCode)

思路:

把每层的结果都放到一个vector数组里面,然后排序这个vector数组,返回第K大的元素即可

完整代码:

class Solution {
public:
    long long kthLargestLevelSum(TreeNode* root, int k) {
        vector<long long> res;
        queue<TreeNode *> q;
        if(root==nullptr)
            return 0;
        q.push(root);
        while(!q.empty())
        {
            int size=q.size();
            long long path=0;
            for(int i=0;i<size;i++)
            {
                TreeNode *t=q.front();
                q.pop();
                path+=t->val;
                if(t->left)
                    q.push(t->left);
                if(t->right)
                    q.push(t->right);
            }
            res.push_back(path);
        }
        sort(res.begin(),res.end());
        if(res.size()>=k)
            return res[res.size()-k];
        return -1;
    }
};

你可能感兴趣的:(刷题记录,算法,学习,C++,二叉树,数据结构)