时间:2020-7-29
题目地址:https://leetcode-cn.com/problems/sum-of-left-leaves/
题目难度:Easy
题目描述:
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。
思路1:递归遍历
chenkt写的,有点繁琐了
代码段1:通过
# 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:
result = 0
if root == None: return 0
if self.isLeaf(root.left):
result += root.left.val
else:
result += self.sumOfLeftLeaves(root.left)
result += self.sumOfLeftLeaves(root.right)
return result
def isLeaf(self, root):
if root == None:
return False
if root.right == None and root.left == None:
return True
return False
总结:
- 看下大佬的优化版本
- 可能是最近要考试了,疯狂焦虑,太累了,倒是早上瑜伽,晚上尊巴来着,还是得早睡早起,得努力复习,leetcode不行先放放吧
# 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:
if root == None: return 0
if root.left != None and root.left.right == None and root.left.left == None:
return self.sumOfLeftLeaves(root.right) + root.left.val
return self.sumOfLeftLeaves(root.right) + self.sumOfLeftLeaves(root.left)