Pseudokód pro non-rekurzivní provádění výšky stromu a isBST

hlasů
4

Jsem v procesu konverze rekurzivní funkce pro BST, jež nejsou rekurzivní pomoci připravit na pohovor. Zatím jsem zjistil, předobjednávky, nezbytného, ​​postorder, vyhledávání, mazat, vkládat, a převedením BST do kruhového propojeného seznamu. Mám potíže přijít na to, jak použít zásobník nebo fronty získat výšku a zjistit, zda se jedná o BST. Nějaké tipy by bylo velmi ocenil. Nejsem hledá kód, ale logika kódu.

Položena 14/09/2011 v 03:03
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
5

Pro začátek, skvělou práci, příprava na pohovor, jako je tento! Doufám, že jste baví hrát si s těmito algoritmy.

Začněme s úkolem se snaží zjistit, zda je binární strom je BST. Jedním ze způsobů, jak toho dosáhnout, je provést nezbytného chůze stromu a zkontrolujte, zda jsou prvky v seřazeném pořadí. To bude platit v případě, a to pouze v případě, že strom je BST. Vzhledem k tomu, že již máte kód do činění s nezbytného chůze prvků stromu, měli byste být schopni snadno přizpůsobit svůj kód pro kontrolu, zda jsou prvky, které přicházejí z nezbytného chůze jsou řazeny dle sledování posledního prvku, který viděl v nezbytného chůze, pak porovnáním každý prvek generován na předchozí prvek. V případě, že dva jsou mimo provoz, strom není BST.

Chcete-li určit výšku stromu, jednou z možností by bylo, aby se některý z vyhledávacích dotazů, které jste přijít s dosud (předobjednání, postorder, nezbytného) a sledovat výšky stohu v každém bodě. Myšlenka je, že od té doby váš stack bude vždy sledovat cestu zpět z libovolného uzlu až ke kořenu, můžete prostě jít na strom a zaznamená nejhlubší, že jsi někdy viděl zásobník stát. Tato maximální hloubka je pak výška stromu.

Snad to pomůže! A hodně štěstí s rozhovory!

Odpovězeno 14/09/2011 v 03:17
zdroj uživatelem

hlasů
0

Chcete-li zjistit výšku stromu, můžete použít [čas O (n)] Morris průchod].

Chcete-li zjistit, zda se jedná o platný BST, dělat nezbytného chůze stromu. Přesunout prvky do pole. pokud se třídí pole či nikoli ověřit BST zkontrolovat.

Odpovězeno 14/09/2011 v 09:33
zdroj uživatelem

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