代码随想录算法训练营第十七天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

发布时间 2023-06-26 11:36:13作者: 博二爷

 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 }