LeetCode404题—左叶子之和
计算给定二叉树的所有左叶子之和。
3
/
9 20
/
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
思路:
因为是要求的是左叶子之和,我们所需要的条件无非就是:
(1)叶子节点
(2)左边的节点
怎么判断是否为叶子节点呢
那就是当前节点的左子节点和右子节点都没有
怎么是左边的节点呢?
那当前的节点一定是上一个节点的左子节点
找到满足条件,使用递归
递归代码如下:
//如果是空树,直接返回0
if(root == null){
return 0;
}
int sum = 0;
//如果左子节点不为空并且左右叶子节点都为空时,就可判断为左叶子节点
if(root.left != null && root.left.left == null && root.left.right == null){
sum += root.left.val; //
}
//递归 左边的 + 右边的 + 中间的
return sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right) +sum;