Let op: dit zijn huistaken! -> Ik ben niet op zoek naar directe codevoorbeelden, maar eerder een aantal zachte masseren van mijn redenering ...
Ik ben gevraagd om een functie die de wortel van een binaire zoekboom verwijdert door het doen van drie dingen te schrijven: i) de boom te draaien naar rechts ii) het verwijderen van de wortel van de rechter deelboom (Wat was de oorspronkelijke bst root) iii) wederopbouw de bst met de nieuwe root (die links van de oorspronkelijke boom was) en de juiste herschikkingen van de kinderen van dat knooppunt ... Hier is wat ik heb:
(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))))))
Dat is allemaal geweldig, verwachten voor dat het niet de boom komt weer op te bouwen met de kinderen van het knooppunt dat was gepromoveerd naar de root node. Kan iemand me helpen na te denken over hoe ik moet gaan over de implementatie van dat? Ik moet zeggen dat we Bst als lijsten en dat de functie rot-r draait de bst naar rechts hebt gedefinieerd. Dank je.













