/*给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:
二叉树的根是数组中的最大元素。
左子树是通过数组中最大值左边部分构造出的最大二叉树。
右子树是通过数组中最大值右边部分构造出的最大二叉树。
通过给定的数组构建最大二叉树,并且输出这个树的根节点。*/
struct TreeNode* constructMaximumBinaryTree(int* nums, int numsSize){
if(numsSize==0) return NULL;
int i=0,max=nums[0],maxindex=0;
for(i=1;i<numsSize;i++)
{
if(nums[i]>max)
{
max=nums[i];
maxindex=i;
}
}
struct TreeNode *node=(struct TreeNode *)malloc(sizeof(struct TreeNode));
node->val=max;
node->left=constructMaximumBinaryTree(nums,maxindex);
node->right=constructMaximumBinaryTree(&nums[maxindex+1],numsSize-maxindex-1);
return node;
}