二叉搜索树中的插入操作
迭代版:
TreeNode* insertIntoBST(TreeNode* root, int val)
{
if(root == nullptr)
return new TreeNode(val);
TreeNode* ptr = root;
while(true)
{
if(val < ptr->val)
{
if(ptr->left == nullptr)
{
ptr->left = new TreeNode(val);
break;
}
else
ptr = ptr->left;
}
else
{
if(ptr->right == nullptr)
{
ptr->right = new TreeNode(val);
break;
}
else
ptr = ptr->right;
}
}
return root;
}
删除二叉搜索树中的节点
TreeNode* deleteNode(TreeNode* root, int value) {
if (root == nullptr) {
return nullptr;
}
if (value < root->val) {
root->left = deleteNode(root->left, value);
} else if (value > root->val) {
root->right = deleteNode(root->right, value);
} else {
if (root->left == nullptr || root->right == nullptr) {
root = root->left? root->left: root->right;
} else {
TreeNode* cur = root->right;
while (cur->left) {
cur = cur->left;
}
root->val = cur->val;
root->right = deleteNode(root->right, cur->val);
}
}
return root;
}