题意:
给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下:
二叉树的根是数组 nums 中的最大元素。
左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。
右子树是通过数组中 最大值右边部分 递归构造出的最大二叉树。
返回有给定数组 nums 构建的 最大二叉树 。
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {number[]} nums
* @return {TreeNode}
*/
var constructMaximumBinaryTree = function(nums) {
if(nums.length == 0){ return null;}
let len = nums.length,maxValue = Math.max(...nums),maxIndex = 0;
//1、找到最大值索引
for(let i = 0;i < len;i++){
if(nums[i] === maxValue){
maxIndex = i;
}
}
//创建根节点
let root = new TreeNode(maxValue);
//递归构造左边最大数
root.left = constructMaximumBinaryTree(nums.slice(0,maxIndex));
//递归构造右边最大数
root.right = constructMaximumBinaryTree(nums.slice(maxIndex+1,len));
return root;
};