Find Largest Value in Each Tree Row
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
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]
分析
dfs
d和Len(res)比较,不够就加,够就比较得最大
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def largestValues(self, root: TreeNode) -> List[int]:
res = []
def dfs(root:TreeNode, d:int):
if not root:
return
if len(res) < d:
res.append(root.val)
elif res[d-1] < root.val:
res[d-1] = root.val
dfs(root.left,d+1)
dfs(root.right,d+1)
dfs(root,1)
return res
BFS
层遍历一定要pop(0)从前面弹起,因为后面是不合条件的子树。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def largestValues(self, root: TreeNode) -> List[int]:
if not root:
return []
res = []
q = [root]
while q:
size = len(q)
curmax = float('-inf')
for i in range(size):
cur = q.pop(0) #必须要从前面开始 因为后面的是新加的子树
if cur.val > curmax:
curmax = cur.val
if cur.left:
q.append(cur.left)
if cur.right:
q.append(cur.right)
res.append(curmax)
return res