题目描述:
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
解题思路:
深度优先搜索
对于节点node,其左叶子节点可以表示如下:
node.left and (not node.left.left and not node.left.right)
对整棵树进行遍历,当我们遍历到节点 \textit{node}node 时,如果它的左子节点是一个叶子结点,那么就将它的左子节点的值累加计入答案。
class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int:
if not root:
return 0
def dfs(node):
if not node:
return 0
if node.left and not node.left.left and not node.left.right:
self.ans+=node.left.val
dfs(node.left)
dfs(node.right)
return self.ans
self.ans=0
return dfs(root)