654.最大二叉树
题目链接:654.最大二叉树
文档链接:654.最大二叉树
视频链接:又是构造二叉树,又有很多坑!| LeetCode:654.最大二叉树
C++实现
class Solution {
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
TreeNode* node = new TreeNode();
if(nums.size()==1){
node->val = nums[0];
return node;
}
int max = -1;
int index = 0;
for(int i = 0; i < nums.size(); i++){
if(nums[i] > max){
max = nums[i];
index = i;
}
}
node->val = max;
if(index>0){
vector<int> leftnums(nums.begin(),nums.begin()+index);
node->left = constructMaximumBinaryTree(leftnums);
}
if(index<nums.size()-1){
vector<int> rightnums(nums.begin()+index+1, nums.end());
node->right = constructMaximumBinaryTree(rightnums);
}
return node;
}
};
617.合并二叉树
题目链接:617.合并二叉树
文档链接:617.合并二叉树
视频链接:一起操作两个二叉树?有点懵!| LeetCode:617.合并二叉树
C++实现
class Solution {
public:
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
if(root1 == NULL) return root2;
if(root2 == NULL) return root1;
root1->val += root2->val;
root1->left = mergeTrees(root1->left, root2->left);
root1->right = mergeTrees(root1->right, root2->right);
return root1;
}
};
700.二叉搜索树中的搜索
题目链接:700.二叉搜索树中的搜索
文档链接:700.二叉搜索树中的搜索
视频链接:700.二叉搜索树中的搜索
C++实现
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if(root == NULL || root->val == val) return root;
TreeNode* result = NULL;
if(val < root->val) result = searchBST(root->left, val);
else if(val > root->val) result = searchBST(root->right, val);
return result;
}
};
98.验证二叉搜索树
题目链接:98.验证二叉搜索树
文档链接:98.验证二叉搜索树
视频链接:你对二叉搜索树了解的还不够! | LeetCode:98.验证二叉搜索树
C++实现
class Solution {
public:
long long max = LONG_MIN;
bool isValidBST(TreeNode* root) {
if(root == NULL) return true;
bool leftTree = isValidBST(root->left);
if(max >= root->val) return false;
else
max=root->val;
bool rightTree = isValidBST(root->right);
return leftTree&&rightTree;
}
};