算法:左叶子之和
程序员文章站
2022-07-14 18:24:06
...
题目:
计算给定二叉树的所有左叶子之和。
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
思路
初始化结果self.res
从根节点开始,深度遍历。遇到左子节点,self.res += node.val
左子节点的判断条件是左边的子节点,且该节点没有子节点。
递归
(这里有个小技巧,递归的时候,给一个code,用来区分左子节点和右子节点)
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int:
self.res = 0
node = root
def dfs(node,code):
if code=='left' and node and node.left==None and node.right==None:
self.res += node.val
if node:
left = node.left
dfs(left,'left')
right = node.right
dfs(right,'right')
dfs(root,'root')
return self.res
下一篇: 创建多个对象