题目
**链接:https://leetcode.cn/problems/sum-of-left-leaves/description/
我的解答
# 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:
isLeafNode = lambda node: not node.left and not node.right
def dfs(root):
ans = 0
if root.left:
if isLeafNode(root.left):
ans = ans + root.left.val
else:
ans = ans + dfs(root.left)
if root.right and not isLeafNode(root.right):
ans = ans + dfs(root.right)
return ans
return dfs(root)
思路分析
1、记录一个判断是否为叶子节点的方法:
isLeafNode = lambda node: not node.left and not node.right
//左子树为空且右子树有空:叶子节点,返回True,反之则返回False
2、判断此节点的左子树是否为空,不为空则进一步判断是否为叶子节点,如果是,则进行值相加;不是叶子节点,则进行下一步遍历
3、对于右子树,要进行操作的是非叶子节点的非空节点,并进行下一步遍历