LeetCode题解Maximum Binary Tree

1、题目描述

2、分析

找出最大元素,然后分割数组调用。

3、代码

 1  TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
 2         int size = nums.size();
 3         if (size == 0)
 4             return NULL;
 5         TreeNode *dummy = new TreeNode(0);
 6         maxcont(dummy->left, 0, size-1, nums);
 7         return dummy->left;
 8     }
 9     
10     void maxcont(TreeNode* &parent, int left, int right, vector<int>& nums)
11     {
12         if (left > right )
13             return ;
14         int maxindex = find_max(left, right, nums);
15         TreeNode *tmp = new TreeNode(nums[maxindex]);
16         parent = tmp;
17         maxcont(tmp->left, left, maxindex-1, nums);
18         maxcont(tmp->right, maxindex + 1, right, nums);
19     }
20     
21     int find_max(int left, int right, vector<int> &nums)
22     {
23         int n = 0;
24         int maxVal = INT_MIN;
25         for (int i = left; i <= right ; i++) {
26             if ( nums[i] > maxVal) {
27                 maxVal = nums[i];
28                 n = i;
29             }
30                 
31         }
32         return n;
33     }

猜你喜欢

转载自www.cnblogs.com/wangxiaoyong/p/10460523.html