递归

0 阅读1分钟

题目:404. 左叶子之和

遍历顺序:后续遍历

测试用例

image.png

思路

规则:🟦 递归栈(入栈→执行→出栈)| ✅ 执行动作 | 🔴 累加操作 | ans = 初始值 0

www.doubao.com/thread/wb49…

image.png

代码实现

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def sumOfLeftLeaves(self, root: Optional[TreeNode]) -> int:
        def dfs(node: Optional[TreeNode]) -> None:
            if node is None:
                return 
            
            dfs(node.left)
            dfs(node.right)

            left = node.left
            if left and left.left is None and left.right is None:
                nonlocal ans
                ans += left.val

        ans = 0
        dfs(root)
        return ans