Suppression de noeuds de BST à l'aide libre (N)

voix
0

Je codage d'un arbre de recherche binaire et je vais avoir un peu de mal à trouver un moyen de supprimer le noeud efficacement.

J'ai ce code:

struct node* deleteNode(int i, struct node *N)

{
    if (N==NULL)
    {
        return NULL;
    }
    else if (i<N->value)
    {
        N->size--;
        N->lChild=deleteNode(i,N->lChild);
    }
    else if (i>N->value)
    {
        N->size--;
        N->rChild=deleteNode(i,N->rChild);
    }
    else if (N->lChild==NULL)
    {
        return N->rChild;
    }
    else if (N->rChild==NULL)
    {
        return N->lChild;
    }
    else
    {
        N->size--;
        N->value=findMin(N->rChild);
        N->rChild=deleteNode(N->value,N->rChild);
    }
    return N;
}

Et N est une structure de noeuds qui ont des 5 champs: valeur, LCHILD, rChild, la taille, la hauteur. En fait ce que je fais ici est de rendre l'arbre de ne pas pointer vers le nœud que je veux supprimer, mais quand je suis en train de mettre quelque chose comme:

    else if (N->rChild==NULL)
    {
        free(N);
        N=NULL;
        return N->lChild;
    }

Ou tous les codes d'aspect similaire, il ne fonctionne pas. Quelqu'un peut-il me diriger dans la bonne direction s'il vous plaît? Je vous remercie.

Créé 30/03/2011 à 17:20
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Tout d'abord vous dites N = NULL puis appeler N> LCHILD N est nul et en montrant rien alors comment vous attendez-vous pour obtenir la valeur de LCHILD?

Comme il est des devoirs que je ne vais pas donner une réponse directe, mais des conseils.

Pour supprimer le nœud, vérifiez si elle a des enfants, si elle ne marche pas libérer et supprimer des références à ce tels que les parents, l'enfant ptr. Si elle a 1 swap enfant le PTR qui pointe vers le nœud que vous souhaitez supprimer avec l'enfant et libérer le nœud. De même si vous avez également 2 enfants.

Créé 30/03/2011 à 17:24
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more