Upozorňujeme, že se domácí úkoly! -> Nejsem hledali příklady přímých kódu, ale některé jemné masírování mého uvažování ...
Byl jsem požádán, aby napsat funkci, která odstraní kořen binárního vyhledávacího stromu tím, že dělá tři věci: i) rotační stromu vpravo ii) odstranění kořen pravého podstromu (což byl původní BST kořen) iii) přestavba BST s novým kořenem (který byl levý původního stromu) a příslušné přestaveb synů tohoto uzlu ... Zde je to, co mám:
(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ž je všechno skvělé, očekávat, že nebude znovu sestavit strom s dětmi z uzlu, který byl „povýšen“ do kořenového uzlu. Může mi někdo pomoci přemýšlet o tom, jak bych měl jít o implementaci, že? Měl bych zmínit, že jsme definovali BST, jak seznamy a že funkce rot-r otáčí BST doprava. Děkuji.













