Bináris fa a bináris keresés Fa (BST)

szavazat
1

Hogyan lehet átalakítani bináris fa a bináris keresés Tree with O (1) extra helyet?

A kérdést 17/05/2010 10:56
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
6

Konvertálása rendezetlen bináris fa egy rendezett bináris keresési fa triviális, de egy kicsit nehéz csinálni gyorsan.

Itt egy naiv megvalósítás meg kell felelniük a kritériumoknak, nem fogom leírni a tényleges lépéseket tegyen, csak az általános algoritmust.

  1. Fogj egy random levél csomópont a meglévő fa
  2. Szüntethetik a levél csomópont a meglévő fa
  3. Tedd a csomópont a gyökér az új bináris keresési fa
  4. Megragad egy másik random levélcsomópont a meglévő fa
  5. Unlink a csomópont a meglévő fa
  6. Találja meg a megfelelő helyet, és összekapcsolja a csomópont, átviheti az új bináris keresési fa
  7. Ismételje meg a 4-6-ig az eredeti fa üres

Meg kell csupán néhány változót, mint a szülő a levél csomópont te szétválasztottad (kivéve, ha a csomópont területén szülő-hivatkozások), a gyökér, az új fa, és egy pár ideiglenes változók, mind az O (1 ) space kritériumoknak.

Ez nem egy optimális bináris keresési fa. Az, hogy meg sem kell rendezni a csomópontokat, mielőtt felvenné őket, és hozzátéve, a megfelelő sorrendben, vagy használja a kiegyenlítő bináris keresési fa, mint egy piros-fekete fa, vagy egy ferde fa.

Válaszolt 17/05/2010 11:24
a forrás felhasználó

szavazat
-1

Átalakítás bináris fa egy kétszeresen kötött lista- lehet tenni a helyben végzett O (n) Ezután rendezze meg az egyesítés sort, nlogn átalakítani a listán hátát egy fának - O (n)

Egyszerű nlogn megoldás.

Válaszolt 18/02/2014 20:52
a forrás felhasználó

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