1. 程式人生 > 實用技巧 >每日一題20201205(404. 左葉子之和)

每日一題20201205(404. 左葉子之和)

404. 左葉子之和

思路

如果這題要求的是求所有葉子節點的和,那是不是很好做了呢?

其實這個是一樣的,我們現在想要的就是求出左葉子,那麼在求是否是葉子節點的時候,設立一個標誌位就可以知道他是不是左葉子了。
# 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