Skip to content

📚 15.最大二叉树

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/maximum-binary-tree/description/
 */

class TreeNode {
    val: number
    left: TreeNode | null
    right: TreeNode | null
    constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
        this.val = val === undefined ? 0 : val
        this.left = left === undefined ? null : left
        this.right = right === undefined ? null : right
    }
}

function constructMaximumBinaryTree(nums: number[]): TreeNode | null {
    if (nums.length === 0) return null
    if (nums.length === 1) return new TreeNode(nums[0])
    let _maxIdx = nums.indexOf(Math.max(...nums))
    let _root = new TreeNode(nums[_maxIdx])
    _root.left = constructMaximumBinaryTree(nums.slice(0, _maxIdx))
    _root.right = constructMaximumBinaryTree(nums.slice(_maxIdx + 1))
    return _root
}

Released under the MIT License.