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]
算法分析:考查BFS,或者说是树的层序遍历,但要注意区分每一层。我采用的是把每一层的节点放入一个队列来区分每一层。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def largestValues(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
queue = [root]
maxnum = []
while len(queue) > 0:
levelmax = queue[0].val
temp = []
for node in queue:
if node.val > levelmax:
levelmax = node.val
temp.extend(filter(None, (node.right, node.left)))
queue = temp
maxnum.append(levelmax)
return maxnum
本文介绍了一种算法,用于找到二叉树中每一层的最大值。通过使用队列实现层序遍历,该算法可以有效地处理这个问题。

657

被折叠的 条评论
为什么被折叠?



