zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【Leetcode刷题Python】404. 左叶子之和

PythonLeetCode 刷题 404 叶子
2023-09-14 09:13:01 时间

1 题目

给定二叉树的根节点 root ,返回所有左叶子之和。

2 解析

一个节点为「左叶子」节点,当且仅当它是某个节点的左子节点,并且它是一个叶子结点。因此我们可以考虑对整棵树进行遍历,当我们遍历到节点 \textit{node}node 时,如果它的左子节点是一个叶子结点,那么就将它的左子节点的值累加计入答案。

3 Python实现

class Solution:
    def sumOfLeftLeaves(self, root: Optional[TreeNode]) -> int:

        isLeafNode = lambda node:not node.left and not node.right
        def dfs(r):
            ans = 0
            if r.left:
                ans +=r.left.val if isLeafNode(r.left) else dfs(r.left)
            if r.right and not isLeafNode(r.right):
                ans+=dfs(r.right)
            return ans
        return dfs(root) if root else 0