logo

Odstránenie v strome AVL

Odstránenie uzla zo stromu AVL je podobné ako v strome binárneho vyhľadávania. Vymazanie môže narušiť faktor rovnováhy stromu AVL, a preto je potrebné strom znovu vyvážiť, aby sa zachovala hodnota AVL. Na tento účel musíme vykonať rotácie. Dva typy rotácie sú L rotácia a R rotácia. Tu budeme diskutovať o rotáciách R. L rotácie sú ich zrkadlovým obrazom.

Ak sa uzol, ktorý sa má vymazať, nachádza v ľavom podstrome kritického uzla, potom je potrebné použiť rotáciu L, ak sa uzol, ktorý sa má vymazať, nachádza v pravom podstrome kritického uzla. , použije sa rotácia R.

Uvažujme, že A je kritický uzol a B je koreňový uzol jeho ľavého podstromu. Ak sa má vymazať uzol X nachádzajúci sa v pravom podstrome A, môžu nastať tri rôzne situácie:

Rotácia R0 (Uzol B má faktor vyváženia 0)

Ak má uzol B nulový faktor rovnováhy a faktor rovnováhy uzla A sa po vymazaní uzla X naruší, strom bude znovu vyvážený rotáciou stromu pomocou rotácie R0.

Kritický uzol A sa presunie doprava a uzol B sa stane koreňom stromu s T1 ako jeho ľavým podstromom. Podstromy T2 a T3 sa stanú ľavým a pravým podstromom uzla A. proces zapojený do rotácie R0 je znázornený na nasledujúcom obrázku.

Odstránenie v strome AVL

Príklad:

Odstráňte uzol 30 zo stromu AVL znázorneného na nasledujúcom obrázku.

Odstránenie v strome AVL

Riešenie

V tomto prípade má uzol B súčiniteľ rovnováhy 0, preto sa strom otočí pomocou rotácie R0, ako je znázornené na nasledujúcom obrázku. Uzol B(10) sa stane koreňom, zatiaľ čo uzol A sa presunie doprava. Pravý potomok uzla B sa teraz stane ľavým potomkom uzla A.

mapa v jave
Odstránenie v strome AVL

Rotácia R1 (Uzol B má faktor vyváženia 1)

Rotácia R1 sa má vykonať, ak je koeficient rovnováhy uzla B 1. Pri rotácii R1 sa kritický uzol A presunie doprava, pričom podstromy T2 a T3 sú jeho ľavým a pravým potomkom. T1 sa má umiestniť ako ľavý podstrom uzla B.

Proces zapojenia do rotácie R1 je znázornený na nasledujúcom obrázku.

Odstránenie v strome AVL

Príklad

Odstráňte uzol 55 zo stromu AVL zobrazeného na nasledujúcom obrázku.

Odstránenie v strome AVL

Riešenie :

Vymazanie 55 zo stromu AVL naruší faktor rovnováhy uzla 50, t. j. uzla A, ktorý sa stane kritickým uzlom. Toto je podmienka rotácie R1, pri ktorej sa uzol A posunie doprava (zobrazené na obrázku nižšie). Pravá strana B je teraz ľavá od A (t.j. 45).

Proces riešenia je znázornený na nasledujúcom obrázku.

Odstránenie v strome AVL

Rotácia R-1 (Uzol B má vyvážený faktor -1)

Rotácia R-1 sa má vykonať, ak má uzol B faktor rovnováhy -1. S týmto prípadom sa zaobchádza rovnako ako s rotáciou LR. V tomto prípade sa uzol C, ktorý je pravým potomkom uzla B, stane koreňovým uzlom stromu s B a A ako jeho ľavým a pravým potomkom.

Podstromy T1, T2 sa stávajú ľavým a pravým podstromom B, zatiaľ čo T3, T4 sa stávajú ľavým a pravým podstromom A.

reťazec v porovnaní s

Proces rotácie R-1 je znázornený na nasledujúcom obrázku.

Odstránenie v strome AVL

Príklad

Odstráňte uzol 60 zo stromu AVL znázorneného na nasledujúcom obrázku.

Odstránenie v strome AVL

Riešenie:

v tomto prípade má uzol B súčiniteľ rovnováhy -1. Vymazanie uzla 60 naruší vyváženie uzla 50, preto je potrebné ho otočiť o R-1. Uzol C t.j. 45 sa stáva koreňom stromu s uzlom B(40) a A(50) ako jeho ľavým a pravým potomkom.

Odstránenie v strome AVL