每日一题20201205(404. 左叶子之和)

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

posted @ 2020-12-05 12:45  米洛丶  阅读(57)  评论(0编辑  收藏  举报