代码随想录 | 刷题-二叉树5
654.最大二叉树
1 | class Solution { |
617.合并二叉树
1 | class Solution { |
700.二叉搜索树中的搜索
不可以在root->val == val
之前判定左右子树是否存在,会在搜索到叶子节点时提前结束
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if(!root)return NULL;
// cout<<"cur val"<<root->val<<endl;
// if(!root->left && !root->right)return NULL; // --- 不可以在这里判定
if(root->val == val){
return root;
}else if(root->val > val){
return searchBST(root->left, val);
}else{
return searchBST(root->right, val);
}
}
};
98.验证二叉搜索树
还是掉坑里了,其实验证二叉树中序遍历是否递增就好。当然也要注意最小值如何取
1
2
3
4
5
6
7
8
9
10
11
12class Solution {
public:
TreeNode* pre = NULL;
bool isValidBST(TreeNode* root) {
if(!root)return true;
bool left = isValidBST(root->left);
if(pre != NULL && pre->val >= root->val)return false;
pre = root;
bool right = isValidBST(root->right);
return left && right;
}
};