题目描述:
标签:树
计算给定二叉树的所有左叶子之和。
代码:
思路分析:
1、首先明白左叶子节点的含义。即是左节点 + 叶子结点,即root.left != null && root.left.left == null && root.left.right == null
2、递归结束条件,root为空返回0,即没有左叶子节点值。
3、递归找到左子树上左叶子的和leftValue(后序遍历)
4、递归找到右子树上左叶子的和rightValue(后序遍历)
5、计算midValue是看当前根节点是否满足有左叶子结点,如果有就将左子结点.val赋给它
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if(root == null){
return 0;
}
int leftValue = sumOfLeftLeaves(root.left);
int rightValue = sumOfLeftLeaves(root.right);
int midValue = 0;
if(root.left != null && root.left.left == null && root.left.right == null){
midValue = root.left.val;
}
return midValue + leftValue + rightValue;
}
}