998. 最大二叉树 II
最大树定义:一个树,其中每个节点的值都大于其子树中的任何其他值。
给出最大树的根节点 root。
就像之前的问题那样,给定的树是从列表 A(root = Construct(A))递归地使用下述 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
function insertIntoMaxTree(root: TreeNode | null, val: number): TreeNode | null { if (root === null) return null if (root.val < val) { const node = new TreeNode(val) node.left = root return node } let p = root let r = root.right while(r) { if (r.val < val) { const node = new TreeNode(val) node.left = r p.right = node break } p = r r = r.right } if (r === null) { p.right = new TreeNode(val) } return root };
|