404. 左叶子之和
image.png
思路
如果这题要求的是求所有叶子节点的和,那是不是很好做了呢? 其实这个是一样的,我们现在想要的就是求出左叶子,那么在求是否是叶子节点的时候,设立一个标志位就可以知道他是不是左叶子了。
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def sumOfLeftLeaves(self, root: TreeNode) -> int: return self.getLeaf(root) def getLeaf(self, root, left=False): # 如果root是None,那么说明没有值了,直接返回0 if root is not None: # 如果root.left是None并且root.right也是None # 这里就说明他是叶子节点了,但是我们还得判断是否是左叶子 # getLeaf的left参数就是用来判断他是否是左叶子的 if root.left is None and root.right is None and left: return root.val else: # 如果不是叶子节点,那么递归继续往下寻找,并且找左子树的时候left为True # 这样如果left是叶子节点的话,那么他就是左叶子了 return self.getLeaf(root.left, True) + self.getLeaf(root.right) return 0
image.png