LeetCode 每日一题 1302. 层数最深叶子节点的和

题目链接

1302. 层数最深叶子节点的和

注意事项

要用非递归的方式求二叉树深度(即层次遍历BFS)

代码

class Solution {
public:
    int deepestLeavesSum(TreeNode* root) {

        vector<pair<int, int>> nodes;
        int sum = 0;
        int maxHeight = maxDeep(root, &nodes);

        for (int i = 0; i < nodes.size(); ++i) {
            if (maxHeight == nodes[i].second){
                sum += nodes[i].first;
            }
        }

        return sum;
    }

    int maxDeep(TreeNode* root, vector<pair<int, int>>* nodes){

        if (root == nullptr){
            return 0;
        }

        queue<TreeNode*> q;
        int depth = 0;

        q.push(root);
        while (!q.empty()){
            int cnt = 0;
            int currentNodes = q.size();
            depth++;

            while (cnt < currentNodes){
                bool f = true;
                TreeNode* treeNode = q.front();
                q.pop();

                if (treeNode->left != nullptr){
                    f = false;
                    q.push(treeNode->left);
                }

                if (treeNode->right != nullptr){
                    f = false;
                    q.push(treeNode->right);
                }

                if (f){
                    nodes->push_back({treeNode->val, depth});
                }

                cnt++;
            }
        }

        return depth;
    }
};
posted @   Frodo1124  阅读(20)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示