Ik ben in het proces van het omzetten van recursieve functie voor een BST aan niet recursieve te helpen bij de voorbereiding voor een interview. Tot dusver heb ik bedacht preorder, inorder, postorder, zoeken, verwijderen, invoegen, en het omzetten van de BST een cirkelvormige gelinkte lijst. Ik heb problemen met het uitzoeken hoe stack of wachtrijen gebruiken om de hoogte te krijgen en te vinden als het een BST. Eventuele tips zou zeer gewaardeerd worden. Ik ben niet op zoek naar code, maar de logica achter de code.
Pseudocode voor niet-recursieve implementatie van de boom hoogte en isBST
Om te beginnen, grote baan voorbereiding voor interviews als deze! Ik hoop dat je plezier spelen met deze algoritmes.
Laten we beginnen met de taak om te proberen om te bepalen of de binaire boom is een BST. Een manier om dit te doen is om een inorder lopen van de boom te doen en te controleren of de elementen in gesorteerde volgorde. Dit zal het geval zijn als en alleen als de boom is een BST. Aangezien u al code om een inorder lopen van de elementen van de boom te doen, moet u in staat om uw code gemakkelijk aanpassen om te controleren of de elementen die uit de inorder wandeling komen worden naargelang het bijhouden van de laatste element dat u in zag de inorder wijd, waarna het vergelijken van elk gegenereerd om het vorige element element. Als de twee zijn niet in orde, de boom is geen BST.
Om de hoogte van de boom te bepalen, zou een optie kunnen zijn voor een van de zoekopdrachten die u hebben bedacht tot nu toe (preorder, postorder, inorder) te nemen en bijhouden van de hoogte van de stapel op elk punt. Het idee hier is dat, omdat je stack altijd bijhouden van de weg terug van een willekeurig knooppunt tot aan de wortel, kun je gewoon de boom lopen en noteer de diepste die je ooit hebt gezien de stapel te worden. Deze maximale diepte is dan de hoogte van de boom.
Ik hoop dat dit helpt! En het beste van geluk met interviews!
Om de hoogte van de boom te vinden, kun je de Morris traversal [O (n) tijd]] gebruiken.
Om te controleren of het een geldig BST, doe een inorder lopen van de boom. Verplaats de elementen in een array. Controleer of de array wordt gesorteerd of een BST niet te valideren.













