问题描述:
计算给定二叉树的所有左叶子之和。
示例:
3 / 9 20 / 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
方法:recursive
1 class Solution(object): 2 def sumOfLeftLeaves(self, root): 3 """ 4 :type root: TreeNode 5 :rtype: int 6 """ 7 res = 0 8 if not root: 9 return 0 10 if root.left and not root.left.left and not root.left.right:#左孩子的左孩子为空并且左孩子的右孩子为空 11 return root.left.val + self.sumOfLeftLeaves(root.right) 12 return self.sumOfLeftLeaves(root.left) + self.sumOfLeftLeaves(root.right)#遍历左右子树以寻找左叶子
官方:
依次遍历7,6,9,5,8,1,3,2
1 class Solution(object): 2 def sumOfLeftLeaves(self, root): 3 """ 4 :type root: TreeNode 5 :rtype: int 6 """ 7 if root == None: 8 return 0 9 sum = 0 10 nodes = list() 11 nodes.append(root) 12 13 while nodes: 14 node = nodes.pop() 15 if node.left: 16 if node.left.left == None and node.left.right == None: 17 sum += node.left.val 18 else: 19 nodes.append(node.left) 20 if node.right: 21 nodes.append(node.right) 22 return sum
2018-09-30 15:02:39