跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录
LeetCode:404.左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。
示例 1:
输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1]
输出: 0
递归法,后序遍历,左右中,注意这里左叶子节点的判断,是需要再父节点的地方来判断的
public int sumOfLeftLeaves(TreeNode root) {
if (root == null)
return 0;
if (root.left == null && root.right == null)
return 0;
// 左
int leftSum;
if (root.left != null && root.left.left == null && root.left.right == null) {
// 是左叶子节点
leftSum = root.left.val;
} else {
// 不是左叶子节点
leftSum = sumOfLeftLeaves(root.left);
}
// 右
int rightSum = sumOfLeftLeaves(root.right);
// 中
int res = leftSum + rightSum;
return res;
}