Kiegyensúlyozott és tökéletesen kiegyensúlyozott fák
Fa tökéletesen kiegyensúlyozott. ha az egyes csomóponti csomópontok száma a bal és a jobb részfa nem tér el több, mint 1.
A fa kiegyensúlyozott. ha minden egyes csomóponthoz a magassága két megfelelő részfák különböznek nem több, mint 1.
Keresés fa - egy fa, amelynek minden csúcsa



AVL-fát (Adelson-Belsky, Landis) - kiegyensúlyozott keresési fa.
Ábra. 6. Példák bináris fák.
a), b) - a kiegyensúlyozott fák; b) - a tökéletesen kiegyensúlyozott fa. keresési fa, AVL-fa
Ami ideális a kiegyensúlyozott fa
A szekvenciát a lépéseket, hogy létrehozzon egy tökéletesen kiegyensúlyozott fát egy előre ismert csomópontok száma (n):
Hoz létre egy gyökér csomópontot;
Hasonló módon a bal oldali részfa szerkesztünk, amely tartalmazza nl = n div 2 csúcsú;
Hasonló módon a megfelelő részfa szerkesztünk, amely tartalmazza nr = n-NL-1 csúcsok;
A rekurzió megszűnik, ha részfa nem tartalmaz vertex (n = 0).
3. példa ELJÁRÁS az ideális kiegyensúlyozott fába
ha (x
ha (x> p ^ .key) majd a Keresés (x, p ^ .Right)
mást writeln ( 'egység van)
Rekurzív eljárást keresést egy értéket a fa pótlására elegendő a blokk beillesztése egy új csomópont egy üzenetet jelenít meg (vagy vissza nulla értékkel), és egy figyelmeztető üzenet „egység van egy” akkor hagyja (vagy hivatkozás helyébe a talált csomópont).
A keresési fa rendezni az adatokat - az épület egy keresési fát, majd körbejárja azt a szabályt, a LPC (emelkedő) vagy PCL (csökkenő)
8. példa ELJÁRÁS keresés a (nem rekurzív) ...
REF2 Draw fák, amelyek létre CreateTree funkció (3. példa) és eljárás keresése (7. példa) a bemeneti karakter sorozat „számítógépek”.
Megjegyzés. . Lásd még a program: TreeSearch.exe (a \ Program Files \ 02_DerevoPoiska) - létrehozását a keresési fa és annak kijátszása; Demt.exe (a \ Program Files \ 03_DerevoPoiska) - létrehozását a keresési fa és kiegyensúlyozott.
Vegye ki a csomópont a keresési fák
10. példa törlési eljárás NODE keresési fa
Megjegyzés: Ha töröl egy elemet a hozzá tartozó két leszármazottai szubsztitúció játszódik jobb legtöbb eleme a bal részfa (lásd protsedurudel).
ELJÁRÁS DELNODE (x: char; VAR p: fa);
eljárás del (var r: fa);