DrRacket Suppression racine d'un arbre binaire de recherche

voix
1

S'IL VOUS PLAÎT NOTER QUE CECI EST DEVOIRS! -> Je ne suis pas à la recherche d'exemples de code directs, mais plutôt un massage doux de mon raisonnement ...

On m'a demandé d'écrire une fonction qui supprime la racine d'un arbre de recherche binaire en faisant trois choses: i) faire tourner l'arbre à droite ii) éliminer la racine du sous-arbre droit (ce qui était la racine de bst d'origine) iii) la reconstruction le bst avec la nouvelle racine (qui était à gauche de l'arbre d'origine) et les réarrangements appropriés des enfants de ce nœud ... Voici ce que j'ai:

    (define (rm-root my-bst)
      (list (key (rot-r my-bst)) 
            (left (rot-r my-bst)) 
            (append (right (right (rot-r my-bst))) 
                    (left (right (rot-r my-bst))))))

Ce qui est tout grand, attendez-vous pour qu'il ne reconstruit pas l'arbre avec les enfants du nœud qui a été « promu » au nœud racine. Quelqu'un peut-il me aider à réfléchir à comment je devrais aller sur la mise en œuvre qui? Je dois dire que nous avons défini de Bst sous forme de listes et que la pourriture r fonction fait tourner le bst à droite. Je vous remercie.

Créé 12/11/2011 à 01:07
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Eh bien, je ne suis pas sûr que ce sera utile 12 jours après on a posé la question, mais voilà.

Pour être clair, je suppose que la structure de données est de la forme (clé de liste de gauche à droite), où gauche et droite sont aussi des arbres (ou vides, mais qui est sans rapport avec cela). Si ce n'est pas le cas, la clarification de ce qui serait nécessaire.

Un problème dans votre code est que vous ne voulez pas ajouter directement les deux listes que vous avez ensemble pour le droit. Vous voulez faire une liste avec la clé d'un de ceux-ci, puis à gauche et à droite. Si je lis correctement, la fonction gauche doit retourner un arbre et devrait donc fonctionner correctement.

Je voudrais vérifier la mise en œuvre de la pourriture-r si je vous étais comme cela semble être la principale possibilité pour les choses vont mal.

Créé 23/11/2011 à 07:33
source utilisateur

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