[LC1302] 层数最深叶子节点的和

题目概述

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

基本思路

这是一个简单的树的遍历的问题,可以用bfs或者dfs来解题。这里采用dfs来解,在遍历的过程中,只需要用全局变量来追踪历史最大的深度是多少,若当前深度等于最大深度,则累加上当前节点的值,若小于最大的深度,则什么都不做;若大于最大的深度,则以当前节点的值初始化累加结果。

代码

【Java】BFS
class Solution {
    int maxDepth = 0;
    int sum = 0;
    public int deepestLeavesSum(TreeNode root) {
        dfs(root, 0);
        return sum;
    }

    public void dfs(TreeNode node, int depth){
        if(node == null){
            return;
        }
        if(depth > maxDepth){
            sum = node.val;
            maxDepth = depth;
        }else if (depth == maxDepth){
            sum += node.val;
        }
        dfs(node.left, depth+1);
        dfs(node.right, depth+1);
    }
}
posted @ 2022-08-17 22:37  XinStar  阅读(25)  评论(0)    收藏  举报