from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def printTreeCore(self, root, preorder=True):
if not root:
return
print('{}->'.format(root.val), end='')
self.printTreeCore(root.left)
self.printTreeCore(root.right)
return
def printTree(self, root, preorder=True):
self.printTreeCore(root)
print("\b\b")
return
def buildtree_breadth(self, breadthlist):
if not breadthlist:
return None
root = TreeNode(breadthlist.pop(0))
q = deque([root])
while breadthlist:
node = q.popleft()
val = breadthlist.pop(0)
if val is not None:
node.left = TreeNode(val)
if not breadthlist:
break
val = breadthlist.pop(0)
if val is not None:
node.right = TreeNode(val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
return root
def get_left_leave(self, node, flag, l):
if node is None:
return
if flag == 1 and node.left is None and node.right is None:
l[0] += node.val
self.get_left_leave(node.left, 1, l)
self.get_left_leave(node.right, 0, l)
return
def sumOfLeftLeaves_leetcode(self, root: TreeNode) -> int:
sum = [0]
self.get_left_leave(root, 0, sum)
return sum[0]
if __name__ == "__main__":
s = Solution()
root = s.buildtree_breadth([3, 9, 20, None, None, 15, 7])
s.printTree(root)
res = s.sumOfLeftLeaves(root)
print(res)