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

给你一棵二叉树,请你返回层数最深的叶子节点的和。

这里是引用
leetcode官方题解
我们从根节点开始进行搜索,在搜索的同时记录当前节点的深度 dep。我们维护两个全局变量 maxdep 和 total,其中 maxdep 表示搜索到的节点的最大深度,total 表示搜索到的深度等于 maxdep 的节点的权值之和。

  1. 节点 x 的深度 dep 小于 maxdep,那么我们可以忽略节点 x,继续进行搜索;
  2. 节点 x 的深度 dep 等于 maxdep,那么我们将节点 x 的权值添加到 total 中;
  3. 节点 x 的深度 dep 大于 maxdep,此时我们找到了一个深度更大的节点,因此需要将 maxdep 置为 dep,并将 total 置为节点 x 的权值。

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/deepest-leaves-sum/solution/ceng-shu-zui-shen-xie-zi-jie-dian-de-he-by-leetc-2/

代码

class Solution {
    
    
    int maxtip=-1;
    int total=0;
public:

    void dfs(TreeNode*root,int t){
    
    
        if(!root) return ;
        if(t>maxtip){
    
    
            maxtip=t;
            total=root->val;
        }
        else if(t==maxtip){
    
    
            total+=root->val;
        }
        dfs(root->left,t+1);
        dfs(root->right,t+1);
    }
    int deepestLeavesSum(TreeNode* root) {
    
    
        dfs(root,0);
        return total;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_45602618/article/details/114393302