Należy pamiętać, że IS pracę domową! -> Ja nie szukam przykładów bezpośrednich kodu, ale raczej pewne delikatne masowanie mojego rozumowania ...
Zostałem poproszony o napisanie funkcji, która usuwa korzeń wyszukiwania binarnego drzewa wykonując trzy rzeczy: i) obracanie drzewo na prawo ii) usunięcie korzenia prawego poddrzewa (który był oryginalny korzeń BST III)) przebudowa BST z nowym korzenia (co było po lewej stronie od oryginalnego drzewa) i odpowiednich przekształceniach synów tego węzła ... Oto co mam:
(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))))))
Co jest świetne, liczą na to, że nie odbudować drzewo z dziećmi węzła, który był „promowane” do węzła głównego. Czy ktoś może mi pomóc myśleć o tym, jak powinny przejść o wdrażaniu tego? Należy wspomnieć, że mamy zdefiniowane BST jako list i że funkcja rot-R obraca BST w prawo. Dziękuję Ci.













