代码随想录算法训练营第1天|654. 最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
654. 最大二叉树
提交代码(二分法)
class Solution {
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
if(nums.size() == 0) return nullptr;
int maxIndex = 0;
for(int i = 1; i < nums.size(); i++)
if(nums[i] > nums[maxIndex]) maxIndex = i;
TreeNode* root = new TreeNode(nums[maxIndex]);
if(nums.size() == 1) return root;
vector<int> leftNums(nums.begin(), nums.begin() + maxIndex);
vector<int> rightNums(nums.begin() + maxIndex + 1, nums.end());
root -> left = constructMaximumBinaryTree(leftNums);
root -> right = constructMaximumBinaryTree(rightNums);
return root;
}
};
617.合并二叉树
提交代码(方法)
class Solution {
public:
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2, TreeNode* root)
{
if(root1 == nullptr && root2 == nullptr) return nullptr;
if(root1 == nullptr && root2!= nullptr) return root2;
if(root1 != nullptr && root2 == nullptr) return root1;
root -> val = root1 -> val + root2 -> val;
root -> left = mergeTrees(root1 -> left, root2 -> left);
root -> right = mergeTrees(root1 -> right, root2 -> right);
return root;
}
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
if(root1 == nullptr && root2 == nullptr) return nullptr;
TreeNode* root = new TreeNode(0);
return mergeTrees(root1, root2, root);
}
};
700.二叉搜索树中的搜索
提交代码(方法)
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if(root == nullptr) return nullptr;
if(root -> val == val) return root;
else if(root -> val < val) return searchBST(root -> right, val);
else return searchBST(root -> left, val);
}
};
98.验证二叉搜索树
提交代码(方法)
class Solution {
public:
vector<int> inorder;
void inorderTraversal(TreeNode* node)
{
if(node == nullptr) return;
inorderTraversal(node -> left);
inorder.push_back(node -> val);
inorderTraversal(node -> right);
return;
}
bool isValidBST(TreeNode* root) {
inorderTraversal(root);
for(int i = 1; i < inorder.size(); i++)
if(inorder[i] <= inorder[i - 1]) return false;
return true;
}
};
总结
日期: 2023 年 3 月 15 日
学习时长: 0 h 30 m
难度: ★ \bigstar ★
累计完成题目数量: 54
距离目标还有数量: 246
小结:
- 最后一道题中序遍历先存数组再判断的方法简直太棒了。