Binární strom strom binárního vyhledávání (BST)

hlasů
1

Jak můžete převést binární strom na strom binárního vyhledávání s O (1), navíc prostor?

Položena 17/05/2010 v 10:56
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
6

Převod neuspořádanou binární strom do spořádané binárního vyhledávacího stromu je triviální, ale trochu složitější dělat rychle.

Zde je naivní implementace, které by měly splňovat kritéria, nebudu popisovat skutečné kroky, aby přijaly, jen celkový algoritmus.

  1. Chytit náhodný koncový uzel z vašeho stávajícího stromu
  2. Odpojit uzel list z vašeho stávajícího stromu
  3. Udělat Uzel kořen svého nového binárního vyhledávacího stromu
  4. Chytit jiný náhodný koncový uzel z vašeho stávajícího stromu
  5. Odpojit že uzel z vašeho stávajícího stromu
  6. Najít správné místo pro a propojení uzlu, do svého nového binárního vyhledávacího stromu
  7. Opakujte krok 4-6, dokud původní strom je prázdný

Ty by měly požadovat jen několik proměnných, jako rodič uzlu listu jste Odpojení (pokud uzlů má rodič-odkazy), kořenový uzel nového stromu a několik dočasných proměnných, a to vše v rámci vašeho O (1 ) kritéria pro prostor.

To nebude produkovat optimální strom binárního vyhledávání. K tomu je třeba buď třídit uzlů před přidáním a jejich přidání ve správném pořadí, nebo použijte vyrovnávací strom binárního vyhledávání, jako červeno-černý strom nebo rozevírá stromu.

Odpovězeno 17/05/2010 v 11:24
zdroj uživatelem

hlasů
-1

Převést binární strom do dvojnásob propojeny Seznam Titulů lze provést inplace v O (n), pak třídit je pomocí merge sort, nlogn převést seznamu zpět do stromu - O (n)

Jednoduché nlogn řešení.

Odpovězeno 18/02/2014 v 20:52
zdroj uživatelem

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