1. 程式人生 > >LeetCode--404--左葉子之和

LeetCode--404--左葉子之和

color div 依次 lee bject height recursive back nbsp

問題描述:

計算給定二叉樹的所有左葉子之和。

示例:

    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

LeetCode--404--左葉子之和