/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int max_vec(vector<int>nums){
int k=0;
int m=nums[0];
for(int i=0;i<nums.size();i++){
if(m<nums[i]){
k=i;
m=nums[i];
}
}
return k;
}
void oper(TreeNode*root,vector<int>left,vector<int>right){
if(left.size()==0&&right.size()==0)return ;
if(left.size()!=0){
int k=max_vec(left);
root->left=new TreeNode(left[k]);
vector<int>m1(left.begin(),left.begin()+k);
vector<int>m2(left.begin()+k+1,left.end());
oper(root->left,m1,m2);
}
if(right.size()!=0){
int k=max_vec(right);
root->right=new TreeNode(right[k]);
vector<int>m1(right.begin(),right.begin()+k);
vector<int>m2(right.begin()+k+1,right.end());
oper(root->right,m1,m2);
}
}
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
if(nums.size()==0)return NULL;
int k=0;
int m=nums[0];
for(int i=0;i<nums.size();i++){
if(m<nums[i]){
k=i;
m=nums[i];
}
}
TreeNode*root=new TreeNode(nums[k]);
vector<int>left(nums.begin(),nums.begin()+k);
vector<int>right(nums.begin()+k+1,nums.end());
oper(root,left,right);
return root;
}
};
654. 最大二叉树
最新推荐文章于 2024-07-10 11:04:17 发布
文章介绍了如何使用Solution类,通过递归方法构造一个最大二叉树。主要涉及`constructMaximumBinaryTree`函数,它根据给定的整数数组nums构建树,通过`oper`函数对左右子树进行处理。
摘要由CSDN通过智能技术生成