左叶子之和404

题目:计算给定二叉树的所有左叶子之和。

1
2
3
4
5
6
7
    3
/
9 20
/
15 7

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

思路:必须是叶子节点(是子节点且此子节点的左右孩子都是空),才能append

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class :
def __init__(self, x):
self.val = x
self.left = None
self.right = None

class Solution:
def helper(self, root,res):

if root and root.left:
# 保证是叶子节点
if not root.left.left and not root.left.right:
res.append(root.left.val)
# 否则在左节点中查找
self.helper(root.left,res)
if root and root.right:
self.helper(root.right,res)

def sumOfLeftLeaves(self, root):
"""
:type root: TreeNode
:rtype: int
"""
res = []
self.helper(root,res)
return sum(res)

# 例子
tree = TreeNode(3)
left_tree = TreeNode(9)
right_tree = TreeNode(20)
right_tree.left = TreeNode(15)
right_tree.right = TreeNode(7)
tree.left = left_tree
tree.right = right_tree
print(Solution().sumOfLeftLeaves(TreeNode(None)))