DrRacket Ștergerea rădăcina unui arbore binar de căutare

voturi
1

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.

Întrebat 12/11/2011 la 01:07
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Ei bine, eu nu sunt sigur că acest lucru va fi util la 12 de zile de la întrebarea a fost întrebat, dar aici merge.

Pentru a fi clar, eu presupun că structura de date este de forma (tasta lista de la stânga la dreapta), în cazul în care stânga și dreapta sunt, de asemenea, copaci (sau goale, dar asta e irelevant pentru acest lucru). În cazul în care acest lucru nu este cazul, ar fi necesară o clarificare a acestei.

O problemă în codul dvs. este că nu doriți să adăugați în mod direct cele două liste aveți împreună pentru dreptul. Vrei să faci o listă cu cheia unuia dintre acestea, și apoi stânga și dreapta. Dacă am citit acest lucru în mod corect, funcția din stânga ar trebui să se întoarcă un copac și, prin urmare, ar trebui să funcționeze bine.

Mi-ar verifica punerea în aplicare a Rot-r dacă aș fi la fel de care pare a fi posibilitatea principală pentru lucrurile merg prost.

Publicat 23/11/2011 la 07:33
sursa de către utilizator

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