DrRacket Usuwanie korzenia binarne drzewo poszukiwań

głosy
1

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.

Utwórz 12/11/2011 o 01:07
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Cóż, nie jestem pewien, że to będzie przydatna 12 dni po pytano, ale tu idzie.

Żeby było jasne, zgaduję, że struktura danych ma postać (klucz lista lewy prawy), gdzie w lewo i prawo są również drzewa (lub pusty, ale to bez znaczenia dla tego). Jeśli tak nie jest, to potrzebne będzie wyjaśnienie tego.

Jednym z problemów w kodzie jest to, że nie chcesz, aby bezpośrednio dołączyć dwie listy masz razem na prawo. Chcesz zrobić listę za pomocą klawisza jednej z nich, a następnie w lewo i prawo. Jeśli czytam to poprawnie, lewa funkcja powinna powrócić na drzewo, a zatem powinny działać prawidłowo.

Chciałbym sprawdzić realizację Rot-R gdybym cię jako że wydaje się być głównym możliwość rzeczy dzieje się źle.

Odpowiedział 23/11/2011 o 07:33
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more