DrRacket Slette roten av en binært søketre

stemmer
1

VÆR OPPMERKSOM PÅ AT DETTE ER lekser! -> Jeg er ikke ute etter direkte kode eksempler, men heller noen masser av mitt resonnement ...

Jeg har blitt bedt om å skrive en funksjon som fjerner roten av et binært søketre ved å gjøre tre ting: i) å rotere treet til høyre ii) fjerne roten til høyre subtre (som var den opprinnelige bst root) iii) ombygging BST med den nye root (som var venstre for den opprinnelige treet) og de aktuelle rearrangements barns at node ... Her er hva jeg har:

    (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))))))

Som er alt flott, forventer for at det ikke gjenoppbygge treet med barn noden som ble forfremmet til rotnoden. Kan noen hjelpe meg til å tenke på hvordan jeg skal gå om å gjennomføre det? Jeg bør nevne at vi har definert Bst er så lister og at funksjonen råte-r roterer bst til høyre. Takk skal du ha.

Publisert på 12/11/2011 klokken 00:07
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Vel, jeg er ikke sikker på at dette vil være nyttig 12 dager etter at spørsmålet ble stilt, men her går.

For å være klar, jeg gjette at datastrukturen er av formen (listen nøkkel venstre til høyre), hvor venstre og høyre er også trær (eller tom, men det er irrelevant for denne). Hvis dette ikke er tilfelle, vil avklaring av at være nødvendig.

Et problem i koden din, er at du ikke ønsker å direkte legge de to listene du har sammen for retten. Du ønsker å lage en liste med nøkkelen til en av dem, og deretter til venstre og høyre. Hvis jeg leser dette riktig, skal den venstre funksjonen returnere et tre, og derfor bør fungere fint.

Jeg ville sjekke gjennomføringen av råte-r hvis jeg var deg som det synes å være den viktigste muligheten for ting som gikk galt.

Svarte 23/11/2011 kl. 06:33
kilden bruker

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