1、题目描述
https://leetcode-cn.com/problems/sum-of-left-leaves/
计算给定二叉树的所有左叶子之和。
2、代码详解
递归
# 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 and root.left.left == None and root.left.right == None:
return root.left.val + self.sumOfLeftLeaves(root.right)
else:
return self.sumOfLeftLeaves(root.left) + self.sumOfLeftLeaves(root.right)
迭代
class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int:
sum_ = 0
if not root:
return 0
ans = [root]
while ans:
r = ans.pop()
if r.left and not r.left.left and not r.left.right:
sum_ += r.left.val
if r.left:
ans.append(r.left)
if r.right:
ans.append(r.right)
return sum_