题目: 计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
思路:首先想到的是应该用递归做,但是在递归中无法判断当前root是否为左节点,所以当root不存在子节点时无法判断。所以应该将判断是否为左叶子节点的操作放到上一层,递归终止条件只要给出当root为None时的情况就行(这个没有考虑清楚,考虑了半天root不存在子节点的情况)
代码:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def sumOfLeftLeaves(self, root):
"""
:type root: TreeNode
:rtype: int
"""
result = 0
if not root:
return 0
elif root.left != None and root.left.left == None and root.left.right == None:
result = root.left.val
return result + self.sumOfLeftLeaves(root.left) + self.sumOfLeftLeaves(root.right)