[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);
}
}

浙公网安备 33010602011771号