Pseudokode for ikke-rekursiv implementeringen av trehøyden og isBST

stemmer
4

Jeg er i ferd med å konvertere rekursive funksjonen for en BST til ikke-rekursive for å forberede for et intervju. Så langt har jeg funnet ut forhåndsbestilling, inorder, Postorder, søk, slette, sette inn, og konvertere BST til en sirkulær lenket liste. Jeg har problemer med å finne ut hvordan du bruker stack eller køer for å få høyden og for å finne ut om det er en BST. Eventuelle tips vil bli verdsatt. Jeg er ikke ute etter kode, men logikken bak koden.

Publisert på 14/09/2011 klokken 02:03
kilden bruker
På andre språk...                            


2 svar

stemmer
5

For det første, flott jobb forbereder seg på intervjuer som dette! Jeg håper at du har det gøy å spille rundt med disse algoritmene.

La oss begynne med oppgaven med å prøve å finne ut om det binære treet er en BST. En måte å gjøre dette på er å gjøre en inorder gange fra treet og se om elementene er i sortert rekkefølge. Dette vil være sant hvis og bare hvis treet er en BST. Siden du allerede har koden for å gjøre en inorder gange av elementene i treet, bør du være i stand til enkelt å tilpasse koden din for å sjekke om de elementene som kommer ut av inorder gange er sortert ved å holde styr på det siste elementet du så i den inorder tur, deretter sammenligne hvert element som genereres til forrige element. Hvis de to er ute av drift, er treet ikke en BST.

For å bestemme høyden av treet, ville ett alternativ være å ta noen av søkene som du har kommet opp med så langt (forhåndsbestilling, Postorder, inorder) og holde styr på høyden av stabelen på hvert punkt. Ideen her er at siden din stack vil alltid holde styr på banen tilbake fra enhver node opp til roten, kan du bare gå treet og ta det dypeste at du noensinne har sett bunken bli. Denne maksimale dybde er da høyden av treet.

Håper dette hjelper! Og lykke til med intervjuer!

Svarte 14/09/2011 kl. 02:17
kilden bruker

stemmer
0

For å finne høyden på treet, kan du bruke Morris traversering [O (n) tid]].

For å sjekke om det er en gyldig BST, gjør en inorder gange fra treet. Flytte elementene i en matrise. Sjekk om matrisen er sortert eller ikke å validere en BST.

Svarte 14/09/2011 kl. 08:33
kilden bruker

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