Eu sunt în procesul de conversie a funcției recursive pentru o BST non recursiv pentru a ajuta la pregătirea pentru un interviu. Până în prezent, am dat seama precomandă, inordine, postordine, căutare, șterge, se introduce, și transformarea BST într-o listă circulară legată. Sunt probleme cu imaginind cum să folosească stiva sau cozi pentru a obține înălțimea și pentru a afla dacă este un BST. Orice sfaturi ar fi apreciat foarte mult. Nu caut cod, dar logica din spatele codului.
Pseudocod pentru punerea în aplicare nerecursive a înălțimii arborilor și isBST
Pentru început, o mare de locuri de muncă și pregătirea pentru interviuri ca aceasta! Sper că te distrezi jucând în jurul acestor algoritmi.
Să începem cu sarcina de a încerca să determine dacă arborele binar este un BST. O modalitate de a face acest lucru este de a face o plimbare inordine a arborelui și verificați dacă elementele sunt în ordine sortată. Acest lucru va fi adevărat dacă și numai dacă arborele este un BST. Din moment ce ai deja cod pentru a face o plimbare inordine a elementelor de copac, ar trebui să fie capabil să se adapteze cu ușurință codul dvs. pentru a verifica dacă elementele care vin din mers pe jos inorder sunt clasificate în funcție de a ține evidența ultimului element ați văzut în plimbare inordine, comparând apoi fiecare element generat la elementul anterior. În cazul în care cei doi sunt în afara de ordine, copacul nu este un BST.
Pentru a determina înălțimea copacului, o opțiune ar fi să ia oricare dintre căutările pe care le-ați venit cu până acum (precomandă, postordine, inordine) și pentru a urmări înălțimea stivei la fiecare punct. Ideea aici este că din moment ce stack-ul tău va păstra întotdeauna urmări drumul înapoi de la orice nod până la rădăcină, puteți merge pur și simplu copac și înregistrează cea mai mare adâncime pe care l-ai văzut vreodată stiva devin. Această adâncime maximă este atunci înălțimea copacului.
Sper că acest lucru vă ajută! Și, cel mai mult noroc cu interviuri!
Pentru a găsi înălțimea copacului, ai putea folosi Morris parcurgeri [O (n)]].
Pentru a verifica dacă acesta este un BST valabil, faceți o plimbare inordine a arborelui. Mutați elementele într-o matrice. Verificați dacă matrice este sortat sau nu pentru a valida un BST.













