gpt4 book ai didi

C++ 从 BST 中删除一个节点

转载 作者:行者123 更新时间:2023-11-28 00:48:17 25 4
gpt4 key购买 nike

<分区>

我的删除功能有问题。我不知道似乎是什么问题。请帮我解决这个问题。非常感谢。

node* tree_minimum(node *x){

while(x->left!=NULL){
x=x->left;
}
return x;
}

node* tree_successor(node *x){

if(x->right!=NULL)
return tree_minimum(x->right);

node *y;
y=new node;
y=x->parent;

while(y!=NULL&&x==y->right){
x=y;
y=y->parent;
}
return y;
}

node* tree_search(node* x,int k){

if(x==NULL||k==x->key)
return x;

if(k<x->key)
return tree_search(x->left,k);
else
return tree_search(x->right,k);
}

node* tree_delete(int b){

node *y;
y=new node;
node *x;
x=new node;
node *z;
z=new node;

z=tree_search(root,b);

if(isempty()){
cout<<"TREE is empty.";
return NULL;
}

if(z->left==NULL||z->right==NULL)
y=z;
else
y=tree_successor(z);

if(y->left!=NULL)
x=y->left;
else
x=y->right;

if(x!=NULL)
x->parent=y->parent;
if(y->parent==NULL)
root=x;
else{

if(y=y->parent->left)
y->parent->left=x;
else
y->parent->right=x;
}
if(y!=z)
y->key=z->key;

return y;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com