654.最大二叉树
比较简单,直接上代码
1 TreeNode* constructMax_cursor(vector<int>& nums) 2 { 3 if (nums.size() == 0) return NULL; 4 //getMaxNum 5 int index = 0; 6 int max_ = INT_MIN; 7 for (int i = 0; i < nums.size(); i++) 8 { 9 if (max_ < nums[i]) 10 { 11 index = i; 12 max_ = nums[i]; 13 } 14 } 15 16 TreeNode* curNode = new TreeNode(max_); 17 18 //分割数组 19 vector<int> left = vector<int>(nums.begin(), nums.begin() + index); 20 21 vector<int> right = index + 1 != nums.size() ? 22 vector<int>(nums.begin() + index + 1, nums.end()) : vector<int>(nums.end(), nums.end()); 23 24 25 curNode->left = constructMax_cursor(left); 26 curNode->right = constructMax_cursor(right); 27 28 return curNode; 29 } 30 TreeNode* constructMaximumBinaryTree(vector<int>& nums) { 31 if (nums.size() == 0) return NULL; 32 33 return constructMax_cursor(nums); 34 }