Ennen kuin tiedämme binäärihakupuun ja AVL-puun eroista, meidän tulisi tietää binäärihakupuu ja AVL-puu erikseen.
Mikä on binäärihakupuu?
The binäärihakupuu on puu binäärinen puu. Kuten tiedämme, sillä puulla voi olla 'n' määrä lapsia, kun taas; binääripuussa voi olla korkeintaan kaksi lasta. Joten binääripuun rajoitusta seuraa myös binäärihakupuu. Jokaisella binaarihakupuun solmulla tulisi olla korkeintaan kaksi alalaista; toisin sanoen voimme sanoa, että binäärihakupuu on binääripuun muunnos.
Binäärihakupuu seuraa myös binäärihaun ominaisuuksia. Binäärihaussa kaikkien taulukon elementtien on oltava lajiteltuina. Laskemme binäärihaussa keskielementin, jossa keskielementin vasen osa sisältää keskiarvoa pienemmän arvon ja keskielementin oikea osa sisältää keskiarvoa suuremmat arvot.
Binäärihakupuussa keskimmäisestä elementistä tulee juurisolmu, oikeasta osasta oikea alipuu ja vasemmasta osasta vasen alipuu. Siksi voimme sanoa, että binäärihakupuu on yhdistelmä a binääripuu ja binäärihaku .
Huomautus: Binäärihakupuu voidaan määritellä binääripuuksi, jossa kaikki vasemman alipuun elementit ovat pienempiä kuin juurisolmu ja kaikki oikean alipuun elementit ovat suurempia kuin juurisolmu.
Aika monimutkaisuus binäärihakupuussa
Jos binäärihakupuu on lähes tasapainoinen puu, kaikilla operaatioilla on aikamonimutkaisuus O (kirjaudu sisään) koska haku on jaettu joko vasemmalle tai oikealle alipuulle.
miksi merkin käyttöliittymä javassa
Jos binäärihakupuu on joko vasemmalle tai oikealle vinossa, kaikkien toimintojen aikamonimutkaisuus on Päällä) koska meidän täytyy kulkea n elementtiin asti.
Mikä on AVL-puu?
An AVL puu on itsetasapainottava binäärihakupuu, jossa vasemman ja oikean alipuun korkeusero ei voi olla suurempi kuin yksi. Tämä ero tunnetaan tasapainotekijänä. AVL-puussa tasapainotekijän arvot voivat olla joko -1, 0 tai 1.
Miten binäärihakupuun itsetasapainotus tapahtuu?
Kuten tiedämme, AVL-puu on itsetasapainottava binäärihakupuu. Jos binäärihakupuu ei ole tasapainossa, se voidaan tasapainottaa itse tietyillä uudelleenjärjestelyillä. Nämä uudelleenjärjestelyt voidaan tehdä käyttämällä joitain kiertoja.
Ymmärretään itsetasapainotusta esimerkin kautta.
Oletetaan, että haluamme lisätä 10, 20, 30 AVL-puussa.
Seuraavat ovat tapoja lisätä 10, 20, 30 AVL-puuhun:
kuinka vanha pete davidson on
Vaihe 1: Ensin luomme binaarihakupuun alla olevan kuvan mukaisesti:
Vaihe 2: Yllä olevassa kuvassa voidaan havaita, että puu on epätasapainossa, koska solmun 30 tasapainokerroin on 2. Jotta siitä tulisi AVL-puu, meidän on suoritettava joitain kiertoja. Jos suoritamme oikean kierron solmulle 20, solmu 30 liikkuu alaspäin, kun taas solmu 20 liikkuu ylöspäin, kuten alla on esitetty:
Kuten voimme havaita, lopullinen puu seuraa binaarihakupuun ja tasapainoisen puun ominaisuutta; siksi se on AVL-puu.
Siinä tapauksessa puu oli jätetty epätasapainoinen puu, joten suoritamme oikean kierron solmulle.
Vaihe 1: Ensin luomme binaarihakupuun alla olevan kuvan mukaisesti:
Vaihe 2: Yllä olevasta kuvasta voidaan havaita, että puu on epätasapainossa, koska solmun 10 tasapainokerroin on -2. Jotta voimme tehdä siitä AVL-puun, meidän on suoritettava joitain kiertoja. Se on oikeanpuoleinen epätasapainoinen puu, joten suoritamme kierron vasemmalle. Jos suoritamme kierron vasemmalle solmulle 20, niin solmu 20 liikkuu ylöspäin ja solmu 10 liikkuu alaspäin, kuten alla on esitetty:
Camelcase python
Kuten voimme havaita, lopullinen puu seuraa ominaisuutta Binäärihakupuu ja a tasapainoinen puu ; siksi se on AVL-puu.
Vaihe 1: Ensin luomme binaarihakupuun alla olevan kuvan mukaisesti:
Vaihe 2: Yllä olevassa kuvassa voidaan havaita, että puu on epätasapainossa, koska juurisolmun tasapainokerroin on 2. Jotta siitä tulisi AVL-puu, meidän on suoritettava joitain kiertoja. Yllä oleva skenaario on vasen-oikea epätasapainoinen, koska yksi solmu on emosolmunsa vasemmalla puolella ja toinen on pääsolmunsa oikealla puolella. Ensin suoritetaan kierto vasemmalle, ja kierto tapahtuu solmujen 10 ja 20 välillä. Vasemman kierron jälkeen 20 siirtyy ylöspäin ja 10 liikkuu alaspäin alla olevan kuvan mukaisesti:
Silti puu on epätasapainossa, joten teemme puulle oikean kierron. Kun puulle on tehty oikea kierto, puu haluaa alla olevan kuvan mukaisesti:
Kuten voimme havaita yllä olevassa puussa, puu seuraa binaarihakupuun ja tasapainoisen puun ominaisuutta; siksi se on AVL-puu.
Vaihe 1: Ensin luomme binaarihakupuun alla olevan kuvan mukaisesti:
Vaihe 2: Yllä olevassa kuvassa voidaan havaita, että puu on epätasapainossa, koska juurisolmun tasapainokerroin on 2. Jotta siitä tulisi AVL-puu, meidän on suoritettava joitain kiertoja. Yllä oleva skenaario on oikea-vasen epätasapainoinen, koska yksi solmu on emosolmunsa oikealla puolella ja toinen solmu on emosolmun vasemmalla puolella. Ensin suoritetaan oikea kierto, joka tapahtuu solmujen 30 ja 20 välillä. Oikean kierron jälkeen 20 liikkuu ylöspäin ja 30 liikkuu alaspäin alla olevan kuvan mukaisesti:
Silti yllä oleva puu on epätasapainossa, joten meidän on suoritettava kierto vasemmalle solmulle. Kun vasemmanpuoleinen kierto on suoritettu, solmu 20 liikkuu ylöspäin ja solmu 10 liikkuu alaspäin alla olevan kuvan mukaisesti:
Kuten voimme havaita yllä olevassa puussa, puu seuraa binaarihakupuun ja tasapainoisen puun ominaisuutta; siksi se on AVL-puu.
Erot binaarihakupuun ja AVL-puun välillä
Binäärihakupuu | AVL puu |
---|---|
Jokainen binäärihakupuu on binääripuu, koska molemmissa puussa on kaksi ylintä lasta. | Jokainen AVL-puu on myös binääripuu, koska AVL-puulla on myös ylin kaksi lasta. |
BST:ssä ei ole termiä, kuten tasapainotekijä. | AVL-puussa jokainen solmu sisältää tasapainotekijän, ja tasapainotekijän arvon on oltava joko -1, 0 tai 1. |
Jokainen binäärihakupuu ei ole AVL-puu, koska BST voi olla joko tasapainotettu tai epätasapainoinen puu. | Jokainen AVL-puu on binäärihakupuu, koska AVL-puu seuraa BST:n ominaisuutta. |
Jokainen binaarihakupuun solmu koostuu kolmesta kentästä, eli vasemmasta alipuusta, solmun arvosta ja oikeasta alipuusta. | Jokainen AVL-puun solmu koostuu neljästä kentästä, eli vasemmasta alipuusta, solmun arvosta, oikeasta alipuusta ja tasapainotekijästä. |
Binaarihakupuun tapauksessa, jos haluamme lisätä minkä tahansa solmun puuhun, vertaamme solmun arvoa juuriarvoon; jos solmun arvo on suurempi kuin juurisolmun arvo, niin solmu lisätään oikeaan alipuuhun, muuten solmu lisätään vasempaan alipuuhun. Kun solmu on lisätty, ei ole tarvetta tarkistaa korkeuden tasapainokerrointa lisäyksen suorittamiseksi loppuun. | AVL-puun tapauksessa etsitään ensin sopiva paikka solmun lisäämiseksi. Kun solmu on lisätty, laskemme kunkin solmun tasapainokertoimen. Jos kunkin solmun tasapainokerroin täyttyy, lisäys on valmis. Jos tasapainokerroin on suurempi kuin 1, meidän on suoritettava joitain kiertoja puun tasapainottamiseksi. |
Binäärihakupuussa puun korkeus tai syvyys on O(n), jossa n on solmujen lukumäärä binäärihakupuussa. | AVL-puussa puun korkeus tai syvyys on O(logn). |
Se on helppo toteuttaa, koska meidän on noudatettava binaarihaun ominaisuuksia solmun lisäämiseksi. | Se on monimutkainen toteuttaa, koska AVL-puussa meidän on ensin rakennettava AVL-puu ja sitten meidän on tarkistettava korkeuden tasapaino. Jos korkeus on epätasapainossa, meidän on suoritettava joitain kiertoja puun tasapainottamiseksi. |
BST ei ole tasapainoinen puu, koska se ei noudata tasapainotekijän käsitettä. | AVL-puu on korkeustasapainotettu puu, koska se noudattaa tasapainotekijän käsitettä. |
Haku on tehotonta BST:ssä, kun puussa on suuri määrä solmuja käytettävissä, koska korkeus ei ole tasapainossa. | Haku on tehokasta AVL-puussa, vaikka puussa olisi paljon solmuja, koska korkeus on tasapainossa. |