二叉树层序遍历中,最大层内元素和是多少?
- 内容介绍
- 文章标签
- 相关推荐
本文共计376个文字,预计阅读时间需要2分钟。
给定一个二叉树的根节点root,要求返回树内元素之和以及最大层数的层级编号。
输入示例:python树的结构class TreeNode: def __init__(self, val=0, left=None, right=None): self.val=val self.left=left self.right=right
树的节点值tree=[1, 2, 3, 4, 5, 6, 7, 8, 9]
构建树root=TreeNode(1)root.left=TreeNode(2)root.right=TreeNode(3)root.left.left=TreeNode(4)root.left.right=TreeNode(5)root.right.left=TreeNode(6)root.right.right=TreeNode(7)root.left.left.left=TreeNode(8)root.left.left.right=TreeNode(9)
测试函数def tree_info(root): return sum_values(root), max_level(root)
输出结果sum_values, max_level=tree_info(root)print(f元素之和: {sum_values}, 最大层数的层级编号: {max_level})
输出结果:元素之和: 45, 最大层数的层级编号: 3
给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。
层序遍历:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def maxLevelSum(self, root: Optional[TreeNode]) -> int: queue = collections.deque() queue.append(root) level = 0 bigest_sum = root.val bigest_level = 1 while queue: level += 1 level_sum = 0 length = len(queue) for i in range(length): rt = queue.popleft() if rt.left: queue.append(rt.left) if rt.right: queue.append(rt.right) level_sum += rt.val if level_sum > bigest_sum: bigest_sum = level_sum bigest_level = level return bigest_level本文共计376个文字,预计阅读时间需要2分钟。
给定一个二叉树的根节点root,要求返回树内元素之和以及最大层数的层级编号。
输入示例:python树的结构class TreeNode: def __init__(self, val=0, left=None, right=None): self.val=val self.left=left self.right=right
树的节点值tree=[1, 2, 3, 4, 5, 6, 7, 8, 9]
构建树root=TreeNode(1)root.left=TreeNode(2)root.right=TreeNode(3)root.left.left=TreeNode(4)root.left.right=TreeNode(5)root.right.left=TreeNode(6)root.right.right=TreeNode(7)root.left.left.left=TreeNode(8)root.left.left.right=TreeNode(9)
测试函数def tree_info(root): return sum_values(root), max_level(root)
输出结果sum_values, max_level=tree_info(root)print(f元素之和: {sum_values}, 最大层数的层级编号: {max_level})
输出结果:元素之和: 45, 最大层数的层级编号: 3
给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。
层序遍历:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def maxLevelSum(self, root: Optional[TreeNode]) -> int: queue = collections.deque() queue.append(root) level = 0 bigest_sum = root.val bigest_level = 1 while queue: level += 1 level_sum = 0 length = len(queue) for i in range(length): rt = queue.popleft() if rt.left: queue.append(rt.left) if rt.right: queue.append(rt.right) level_sum += rt.val if level_sum > bigest_sum: bigest_sum = level_sum bigest_level = level return bigest_level
