1. 程式人生 > >leetcode算法: Find Largest Value in Each Tree Row

leetcode算法: Find Largest Value in Each Tree Row

output spa ont self 結果 pytho efi child evel

‘‘‘
You need to find the largest value in each row of a binary tree.

Example:
Input:

1
/ \
3 2
/ \ \
5 3 9

Output: [1, 3, 9]


‘‘‘

# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None

# self.right = None


這道題描述的是:
  給我們一顆二叉樹的根節點,返回每一層最大值的數組


思想:
  廣度優先遍歷,把每一層最大值放入結果列表

python實現:
 1 class Solution(object):
 2     def largestValues(self, root):
 3         """
 4         :type root: TreeNode
 5         :rtype: List[int]
 6         """
 7         if not root:
 8             return []
9 levels = [[root]] 10 values = [[root.val]] 11 for level in levels: 12 next_level = [] 13 value = [] 14 for node in level: 15 if node.left is not None: 16 next_level.append(node.left) 17 value.append(node.left.val)
18 if node.right is not None: 19 next_level.append(node.right) 20 value.append(node.right.val) 21 if next_level: 22 levels.append(next_level) 23 values.append(value) 24 res = [] 25 for v in values: 26 res.append(max(v)) 27 return res


精簡一下代碼:
 1 class Solution(object):
 2     def largestValues(self, root):
 3         """
 4         :type root: TreeNode
 5         :rtype: List[int]
 6         """
 7         values = []
 8         level = [root]
 9         while any(level):
10             values.append( max( [i.val for i in level] ) )
11             level = [child for node in level for child in [node.left, node.right ] if child is not None]
12         return values



leetcode算法: Find Largest Value in Each Tree Row