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.













