Hogyan lehet átalakítani bináris fa a bináris keresés Tree with O (1) extra helyet?
Bináris fa a bináris keresés Fa (BST)
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.
- Fogj egy random levél csomópont a meglévő fa
- Szüntethetik a levél csomópont a meglévő fa
- Tedd a csomópont a gyökér az új bináris keresési fa
- Megragad egy másik random levélcsomópont a meglévő fa
- Unlink a csomópont a meglévő fa
- Találja meg a megfelelő helyet, és összekapcsolja a csomópont, átviheti az új bináris keresési fa
- 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.
Á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.













