class Solution:
def largestValues(self, root: Optional[TreeNode]) -> List[int]:
results = []
if not root: return []
from collections import deque
queue = deque([root])
while queue:
result = []
for _ in range(len(queue)):
cur = queue.popleft()
result.append(cur.val)
if cur.left: queue.append(cur.left)
if cur.right: queue.append(cur.right)
results.append(result)
res = []
for i in results:
res.append(max(i))
return res
迭代法:
同遍历二叉树
class Solution:
def largestValues(self, root: Optional[TreeNode]) -> List[int]:
result = []
if not root: return []
def Traversal(root:TreeNode, depth = 0):
if len(result) == depth: result.append([])
result[depth].append(root.val)
if root.left: Traversal(root.left, depth + 1)
if root.right: Traversal(root.right, depth + 1)
Traversal(root, 0)
res = []
for i in result:
res.append(max(i))
return res
递归法:
同遍历二叉树