ArbreAVL: A-Insertion (TheCrazyProgrammer)

Description

Bonjour,

Le troisième exemple d'implémentation d'insertion de noeuds dans un arbre AVL m'est offert par TheCrazyProgrammer (voir sous Liens).
La fonction "insert" ressemble assez à celle de l'implémentation de GitHub.
Ces deux programmes vont m'influencer pour ma prochaine proposition personnelle "ArbreAVL: B-Insertion-Améliorée-Bis".
node * insert(node *T,int x)
{
    if(T==NULL)
    {
        T=(node*)malloc(sizeof(node));
        T->data=x;
        T->left=NULL;
        T->right=NULL;
    }
    else
        if(x > T->data)        // insert in right subtree
        {
            T->right=insert(T->right,x);
            if(BF(T)==-2)
                if(x>T->right->data)
                    T=RR(T);
                else
                    T=RL(T);
        }
        else
            if(x<T->data)
            {
                T->left=insert(T->left,x);
                if(BF(T)==2)
                    if(x < T->left->data)
                        T=LL(T);
                    else
                        T=LR(T);
            }
        
        T->ht=height(T);
        
        return(T);
}

Comme d'habitude, cette implémentation est complétée d'une interface "utilisable" qui permet d'ajouter une valeur donnée, d'ajouter une valeur aléatoire, de rechercher un nœud de valeur donnée et d'afficher sur demande l'arbre AVL en couleur sur la console.
De plus, après chaque insertion, l'arbre est "vérifié".
 
 
Bonne lecture ...
 

Liens

WikipédiA: Arbre AVL
WikipediA: AVL tree
CodeS-SourceS: ArbreAVL: A-Insertion (GeeksforGeeks)
CodeS-SourceS: ArbreAVL: A-Insertion (GitHub)
TheCrazyProgrammer: Program for AVL Tree in C
 

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.