【题目】
计算给定二叉树的所有左叶子之和。
示例:
3
/
9 20
/
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
【代码】
【递归】
class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int:
self.sum=0
self.visit(root,0)
return self.sum
def visit(self,root,flag):
if not root:
return
if not root.left and not root.right:
self.sum+=flag*root.val
self.visit(root.left,1)
self.visit(root.right,0)
【BFS】
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int:
flag=[0]
queue=[root]
ans=0
while queue:
size=len(queue)
for i in range(size):
node =queue.pop(0)
if not node.left and not node.right:
ans+=node.val*flag[0]
flag.pop(0)
if node.left:
flag.append(1)
queue.append(node.left)
if node.right:
flag.append(0)
queue.append(node.right)
return ans