LeetCode-左叶子之和
程序员文章站
2022-05-20 21:34:58
...
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-left-leaves
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
递归的思想:
根节点左叶子之和 = 根节点左子树的左叶子之和 + 根节点右子树的左叶子节点之和
以节点pNode为根的子树中左叶子之和 = pNode左子树的左叶子之和 + pNode右子树的左叶子节点之和
如果当前节点pLeaf是叶子节点且是左节点,那么以节点pLeaf为根的子树左叶子之和 = pLeaf.val
如果当前节点pLeaf是叶子节点且是右节点,那么以节点pLeaf为根的子树左叶子之和 = 0
因此代码如下:
# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def sumOfLeftLeaves(self, root):
return self.sumLeft(root, False)
def sumLeft(self, root, bLeft):
if root==None:
return 0
# check if root is left leave
if root.left==None and root.right==None and bLeft:
return root.val
return self.sumLeft(root.left, True) + self.sumLeft(root.right, False)
上一篇: 小程序实现答题功能和左上角返回传值
下一篇: 插入排序-直接插入排序