二叉搜索树的最近公共祖先
力扣题目链接
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(root == p || root == q || !root)
return root;
// root在中间
if(root->val > min(p->val, q->val) && root->val < max(p->val, q->val))
return root;
else if(root->val > max(p->val, q->val))
return lowestCommonAncestor(root->left, p, q);
else
return lowestCommonAncestor(root->right, p, q);
}
};
二叉搜索树中的插入操作
力扣题目链接
class Solution {
public:
TreeNode* insertIntoBST(TreeNode* root, int val) {
if(!root){
root = new TreeNode(val);
return root;
}
if(root->val < val)
root->right = insertIntoBST(root->right, val);
else
root->left = insertIntoBST(root->left, val);
}
};
删除二叉搜索树中的节点
力扣题目链接
class Solution {
public:
TreeNode* deleteNode(TreeNode* root, int key) {
if(!root)
return root;
if(root->val == key){
TreeNode* l = root->left;
TreeNode* r = root->right;
if(r && l){
TreeNode* cur = r;
while(r->left)
r = r->left;
r->left = l;
return cur;
}
else if(root->left)
return root->left;
else
return root->right;
}
else if(root->val > key)
root->left = deleteNode(root->left, key);
else
root->right = deleteNode(root->right, key);
return root;
}
};