LeetCode 题解工作台
最大二叉树 II
最大树 定义:一棵树,并满足:其中每个节点的值都大于其子树中的任何其他值。 给你最大树的根节点 root 和一个整数 val 。 就像 之前的问题 那样,给定的树是利用 Construct(a) 例程从列表 a ( root = Construct(a) )递归地构建的: 如果 a 为空,返回 nu…
2
题型
7
代码语言
3
相关题
当前训练重点
中等 · 二分·树·traversal
答案摘要
如果 是最大数,那么将 作为新的根节点, 作为新的根节点的左子树。 如果 不是最大数,由于 是在最后追加的数,那么一定是在 的右边,所以将 作为新节点插入 的右子树即可。
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 二分·树·traversal 题型思路
题目描述
最大树 定义:一棵树,并满足:其中每个节点的值都大于其子树中的任何其他值。
给你最大树的根节点 root 和一个整数 val 。
就像 之前的问题 那样,给定的树是利用 Construct(a) 例程从列表 a(root = Construct(a))递归地构建的:
- 如果
a为空,返回null。 - 否则,令
a[i]作为a的最大元素。创建一个值为a[i]的根节点root。 root的左子树将被构建为Construct([a[0], a[1], ..., a[i - 1]])。root的右子树将被构建为Construct([a[i + 1], a[i + 2], ..., a[a.length - 1]])。- 返回
root。
请注意,题目没有直接给出 a ,只是给出一个根节点 root = Construct(a) 。
假设 b 是 a 的副本,并在末尾附加值 val。题目数据保证 b 中的值互不相同。
返回 Construct(b) 。
示例 1:


输入:root = [4,1,3,null,null,2], val = 5 输出:[5,4,null,1,3,null,null,2] 解释:a = [1,4,2,3], b = [1,4,2,3,5]
示例 2:


输入:root = [5,2,4,null,1], val = 3 输出:[5,2,4,null,1,null,3] 解释:a = [2,1,5,4], b = [2,1,5,4,3]
示例 3:


输入:root = [5,2,3,null,1], val = 4 输出:[5,2,4,null,1,3] 解释:a = [2,1,5,3], b = [2,1,5,3,4]
提示:
- 树中节点数目在范围
[1, 100]内 1 <= Node.val <= 100- 树中的所有值 互不相同
1 <= val <= 100
解题思路
方法一:递归
如果 是最大数,那么将 作为新的根节点, 作为新的根节点的左子树。
如果 不是最大数,由于 是在最后追加的数,那么一定是在 的右边,所以将 作为新节点插入 的右子树即可。
时间复杂度 ,空间复杂度 。其中 是树的节点数。
# 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 insertIntoMaxTree(
self, root: Optional[TreeNode], val: int
) -> Optional[TreeNode]:
if root is None or root.val < val:
return TreeNode(val, root)
root.right = self.insertIntoMaxTree(root.right, val)
return root
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | Depends on the final approach |
| 空间 | Depends on the final approach |
面试官常问的追问
外企场景- question_mark
Ability to perform tree traversal efficiently
- question_mark
Understanding of binary tree properties
- question_mark
Correctly handling state during insertion
常见陷阱
外企场景- error
Inserting the value at the wrong position in the tree
- error
Not maintaining the binary tree's maximum property after insertion
- error
Failing to update parent-child relationships properly
进阶变体
外企场景- arrow_right_alt
Inserting multiple values into the maximum binary tree
- arrow_right_alt
Handling duplicate values in the tree
- arrow_right_alt
Optimizing tree construction with iterative methods