该题解运用后序递归(左右中)的方法,注意判断左叶子结点时要从root结点进行判断。
public int sumOfLeftLeaves(TreeNode root) {
if (root == null) {
return 0;
}
if (root.left == null && root.right == null) {
return 0;
}
int leftNum = sumOfLeftLeaves(root.left);
//注意:判断左叶子结点时要从root结点进行判断
//条件一:root结点的左节点不为空
//条件二:root结点的左结点为子节点
if (root.left != null && root.left.left == null && root.left.right == null) {
leftNum = root.left.val;
}
int rightNum = sumOfLeftLeaves(root.right);
//左叶子之和 = 左子树的左叶子数 + 右子树的左叶子数
return leftNum + rightNum;
}