動機

不管right leaf的dfs

Problem

Given the root of a binary tree, return the sum of all left leaves.

 

Example 1:

Input: root = [3,9,20,Leetcode,null,15,7]Output: 24Explanation: There are two left leaves in the binary tree, with values 9 and 15 respectively.

Example 2:

Input: root = [1]Output: 0

 

Constraints:

    t
  • The number of nodes in the tree is in the range [1, 1000].
  • t
  • -1000 <= Node.val <= 1000

Sol

class Solution:
    def sumOfLeftLeaves(self, root: Optional[TreeNode]) -> int:
        def dfs(r):
            if not r:
                return 0
            elif not r.left and not r.right:
                return r.val
            else:
                ret = dfs(r.left)+dfs(r.right)
                ret = ret-r.right.val if r.right and not r.right.left and not r.right.right else ret
                return ret
        if root and not root.left and not root.right:
            return 0
        else:
            return dfs(root)