как я могу удалить узел в двоичном дереве поиска в c ++ и dev c ++ - PullRequest
0 голосов
/ 21 июня 2020

Я пытался удалить выбранный мной узел. мой код удаления не работал. где моя вина? есть заголовочный файл и исходный файл. они связаны вместе, но я не знаю, что мой код не работает?

node *IkiliAgac::sil(node *kok,int no){
if(kok==NULL)
return kok;
if(kok->no>no)
{
    kok->sol=sil(kok->sol,no);
    return kok;
}
else if(kok->no<no){
    kok->sag=sil(kok->sag,no);
    return kok;
}
if(kok->sol==NULL)
{
    node* temp=kok->sag;
    delete kok;
    return temp;
}
else if(kok->sag==NULL)
{
    node* temp=kok->sol;
    delete kok;
    return temp;
}
else {
    node* succparent=kok;
    node* succ=kok->sag;
    while(succ->sol!=NULL)
    {
        succparent=succ;
        succ=succ->sol;
    }
    if (succparent!=kok)
    succparent->sol=succ->sag;
    else
    succparent->sol=succ->sag;
    kok->no=succ->no;
    delete succ;
    return kok;
}

}

...