给你一棵二叉树,请你返回所有叶子节点的和。
示例:
输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
输出:20
提示:
树中节点数目在 1 到 10^4 之间。
每个节点的值在 1 到 100 之间。
题解:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int sum =0;
public int deepestLeavesSum(TreeNode root) {
return dfs(root, 0);
}
int dfs(TreeNode node,int sum){
if(node==null){ // 递归尽头条件
return 0;
}
if(node.left==null&&node.right==null){ //碰到叶子结点sum计算
return sum+=node.val;
}
return dfs(node.left, sum)+ dfs(node.right, sum); // 如果不是叶子结点 则传递子节点 递归执行
}
}