每日一题20201205(404. 左叶子之和)
作者:互联网
404. 左叶子之和
思路
如果这题要求的是求所有叶子节点的和,那是不是很好做了呢?
其实这个是一样的,我们现在想要的就是求出左叶子,那么在求是否是叶子节点的时候,设立一个标志位就可以知道他是不是左叶子了。
# 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:
return self.getLeaf(root)
def getLeaf(self, root, left=False):
# 如果root是None,那么说明没有值了,直接返回0
if root is not None:
# 如果root.left是None并且root.right也是None
# 这里就说明他是叶子节点了,但是我们还得判断是否是左叶子
# getLeaf的left参数就是用来判断他是否是左叶子的
if root.left is None and root.right is None and left:
return root.val
else:
# 如果不是叶子节点,那么递归继续往下寻找,并且找左子树的时候left为True
# 这样如果left是叶子节点的话,那么他就是左叶子了
return self.getLeaf(root.left, True) + self.getLeaf(root.right)
return 0
标签:None,self,getLeaf,叶子,404,20201205,一题,root,left 来源: https://www.cnblogs.com/we8fans/p/14089139.html