654. 最大二叉树
class Solution {
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
if(nums.size() == 1)
return new TreeNode(nums[0]);
int MaxValue = 0;
int index = 0;
for(int i = 0;i < nums.size(); i++)
{
if(nums[i] > MaxValue){
MaxValue = nums[i];
index = i;
}
}
TreeNode* node = new TreeNode(0);
node->val = MaxValue;
if(index > 0)
{
vector <int> newvec(nums.begin(),nums.begin()+index);
node->left = constructMaximumBinaryTree(newvec);
}
if(index < nums.size()-1)
{
vector <int> newvec(nums.begin()+index+1,nums.end());
node->right = constructMaximumBinaryTree(newvec);
}
return node;
}
};
617. 合并二叉树
class Solution {
public:
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
if(root1 == nullptr) return root2;
if(root2 == nullptr) return root1;
root1->val += root2->val;
root1->left = mergeTrees(root1->left, root2->left);
root1->right = mergeTrees(root1->right, root2->right);
return root1;
}
};
700. 二叉搜索树中的搜索
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if(root == nullptr || root->val == val) return root;
TreeNode* result = nullptr;
if(val < root->val) result = searchBST(root->left, val);
if(val > root->val) result = searchBST(root->right, val);
return result;
}
};