我的代码
void BiTree::del(BiNode* bt,char ch){
// if(root==NULL) return;
// if(root->data==ch){
// root=NULL;
// return;
// }
// if(bt->lchild!=NULL){
// if(bt->lchild->data==ch) bt->lchild=NULL;
// else del(bt->lchild,ch);
// }
// if(bt->rchild!=NULL){
// if(bt->rchild->data==ch) bt->rchild=NULL;
// else del(bt->rchild,ch);
// }
// return;
if(bt==NULL) return;
if(bt->data==ch){
p=NULL;
return;
}
else{
del(bt->lchild,ch);
del(bt->rchild,ch);
}
return;
}
注释掉的地方是可以通过的,我就像问一下为什么下面那种写法不能实现删除结点呢?
下面写法的大抵思路是,如果这个结点是要找的数据就删除,否则就查找左右子树。为空就返回