Vă rugăm să rețineți că aceasta este HOMEWORK! -> Nu caut exemple de cod directe, ci mai degrabă unele de masaj blândă din raționamentul meu ...
Am fost rugat să scrie o funcție care elimină rădăcina unui arbore binar de căutare de a face trei lucruri: i) rotirea arborelui spre dreapta ii) eliminarea rădăcina subarborelui drept (care a fost original rădăcină BST) iii) reconstrucția BST cu noua rădăcină (care a fost în partea stângă a arborelui original) și rearanjamente corespunzătoare ale copiilor din acel nod ... Iată ce am:
(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))))))
Ceea ce este tot mare, se așteaptă pentru că nu reconstrui arborele cu copiii nodului care a fost „promovat“ la nodul rădăcină. Poate cineva să mă ajute gândesc la cum ar trebui să mă duc despre implementarea asta? Ar trebui să menționez că am definit Bst ca liste și că funcția rot-r se rotește BST spre dreapta. Mulțumesc.













