logo

Puun tietorakenne

Luemme lineaariset tietorakenteet, kuten taulukon, linkitetyn listan, pinon ja jonon, joissa kaikki elementit on järjestetty peräkkäin. Erilaisia ​​tietorakenteita käytetään erityyppisille tiedoille.

Tietorakenteen valinnassa otetaan huomioon joitakin tekijöitä:

    Millaisia ​​tietoja pitää tallentaa?: Voi olla mahdollista, että tietty tietorakenne sopii parhaiten jollekin datalle.Toiminnan kustannukset:Jos haluamme minimoida toimintojen kustannukset useimmin suoritetuille toimenpiteille. Meillä on esimerkiksi yksinkertainen luettelo, josta meidän on suoritettava hakutoiminto; sitten voimme luoda taulukon, johon elementit tallennetaan lajiteltuun järjestyksessä suorittamaan binäärihaku . Binäärihaku toimii erittäin nopeasti yksinkertaisessa luettelossa, koska se jakaa hakutilan puoleen.Muistin käyttö:Joskus haluamme tietorakenteen, joka käyttää vähemmän muistia.

Puu on myös yksi tietorakenteista, jotka edustavat hierarkkista dataa. Oletetaan, että haluamme näyttää työntekijät ja heidän asemansa hierarkkisessa muodossa, niin se voidaan esittää alla olevan kuvan mukaisesti:

Puu

Yllä oleva puu näyttää organisaatiohierarkia jostain yrityksestä. Yllä olevassa rakenteessa John on toimitusjohtaja yhtiöstä, ja Johnilla on kaksi suoraa raporttia nimeltä Steve ja Rohan . Steve on nimennyt kolme suoraa raporttia Lee, Bob, Ella missä Steve on johtaja. Bobilla on nimetty kaksi suoraa raporttia Tulee ja Emma . Emma on nimetty kaksi suoraa raporttia Tom ja Raj . Tomilla on yksi suora raportti nimeltä Laskuttaa . Tämä erityinen looginen rakenne tunnetaan nimellä a Puu . Sen rakenne on samanlainen kuin oikea puu, joten se on nimetty a Puu . Tässä rakenteessa juuri on huipulla ja sen oksat liikkuvat alaspäin. Siksi voidaan sanoa, että Tree-tietorakenne on tehokas tapa tallentaa dataa hierarkkisesti.

Ymmärretään joitakin puun tietorakenteen avainkohtia.

  • Puutietorakenne määritellään kokoelmaksi objekteja tai kokonaisuuksia, jotka tunnetaan solmuina ja jotka on linkitetty toisiinsa edustamaan tai simuloimaan hierarkiaa.
  • Puutietorakenne on epälineaarinen tietorakenne, koska se ei tallennu peräkkäin. Se on hierarkkinen rakenne, koska puun elementit on järjestetty useille tasoille.
  • Puun tietorakenteessa ylin solmu tunnetaan juurisolmuna. Jokainen solmu sisältää jonkin verran dataa, ja data voi olla mitä tahansa tyyppiä. Yllä olevassa puurakenteessa solmu sisältää työntekijän nimen, joten tietotyyppi olisi merkkijono.
  • Jokainen solmu sisältää tietoja ja linkin tai viittauksen muihin solmuihin, joita voidaan kutsua lapsiksi.

Jotkut puun tietorakenteessa käytetyt perustermit.

Tarkastellaan puurakennetta, joka näkyy alla:

Puu

Yllä olevassa rakenteessa jokainen solmu on merkitty jollain numerolla. Jokainen yllä olevassa kuvassa näkyvä nuoli tunnetaan nimellä a linkki kahden solmun välillä.

    Juuri:Juurisolmu on puuhierarkian ylin solmu. Toisin sanoen juurisolmu on se, jolla ei ole vanhempia. Yllä olevassa rakenteessa solmu numero 1 on puun juurisolmu. Jos solmu on suoraan linkitetty johonkin toiseen solmuun, sitä kutsutaan vanhempi-lapsisuhteeksi.Lapsisolmu:Jos solmu on minkä tahansa solmun jälkeläinen, solmu tunnetaan lapsisolmuna.Vanhempi:Jos solmu sisältää minkä tahansa alisolmun, sen sanotaan olevan kyseisen alisolmun emo.Sisarus:Solmuja, joilla on sama vanhempi, kutsutaan sisaruksiksi.Lehtisolmu: -Puun solmua, jolla ei ole lapsisolmua, kutsutaan lehtisolmuksi. Lehtisolmu on puun alin solmu. Yleisessä puussa voi olla mikä tahansa määrä lehtisolmuja. Lehtisolmuja voidaan kutsua myös ulkoisiksi solmuiksi.Sisäiset solmut:Solmulla on vähintään yksi lapsisolmu, joka tunnetaan nimellä an sisäinen Esivanhempi solmu: -Solmun esi-isä on mikä tahansa edeltäjäsolmu, joka kulkee polulla juuresta kyseiseen solmuun. Juurisolmulla ei ole esivanhempia. Yllä olevassa kuvassa näkyvässä puussa solmut 1, 2 ja 5 ovat solmun 10 esivanhempia.Jälkeläinen:Tietyn solmun välitön seuraaja tunnetaan solmun jälkeläisenä. Yllä olevassa kuvassa 10 on solmun 5 jälkeläinen.

Puun tietorakenteen ominaisuudet

    Rekursiivinen tietorakenne:Puu tunnetaan myös nimellä a rekursiivinen tietorakenne . Puu voidaan määritellä rekursiiviseksi, koska puutietorakenteen erotettu solmu tunnetaan nimellä a juurisolmu . Puun juurisolmu sisältää linkin kaikkiin sen alipuiden juuriin. Vasen alipuu näkyy alla olevassa kuvassa keltaisena ja oikea alipuu punaisena. Vasen alipuu voidaan jakaa edelleen alipuiksi, jotka näkyvät kolmella eri värillä. Rekursio tarkoittaa jonkin asian vähentämistä samalla tavalla. Joten tämä puutietorakenteen rekursiivinen ominaisuus on toteutettu useissa sovelluksissa.
    Puu Reunojen lukumäärä:Jos solmuja on n, niin silloin olisi n-1 reunaa. Jokainen rakenteen nuoli edustaa linkkiä tai polkua. Jokaisella solmulla, paitsi juurisolmulla, on vähintään yksi saapuva linkki, joka tunnetaan reunana. Siellä olisi yksi linkki vanhempi-lapsi-suhteelle.Solmun x syvyys:Solmun x syvyys voidaan määritellä polun pituudeksi juuresta solmuun x. Yksi reuna antaa yhden yksikön pituuden polussa. Joten solmun x syvyys voidaan määritellä myös juurisolmun ja solmun x välisten reunojen lukumääräksi. Juurisolmun syvyys on 0.Solmun x korkeus:Solmun x korkeus voidaan määritellä pisimmäksi poluksi solmusta x lehtisolmuun.

Puut luokitellaan eri luokkiin Tree-tietorakenteen ominaisuuksien perusteella.

Puun toteutus

Puutietorakenne voidaan luoda luomalla solmut dynaamisesti osoittimien avulla. Muistissa oleva puu voidaan esittää alla olevan kuvan mukaisesti:

Puu

Yllä oleva kuva esittää puutietorakenteen esityksen muistissa. Yllä olevassa rakenteessa solmu sisältää kolme kenttää. Toinen kenttä tallentaa tiedot; ensimmäinen kenttä tallentaa vasemman lapsen osoitteen ja kolmas kenttä oikean lapsen osoitteen.

Ohjelmoinnissa solmun rakenne voidaan määritellä seuraavasti:

 struct node { int data; struct node *left; struct node *right; } 

Yllä oleva rakenne voidaan määrittää vain binääripuille, koska binääripuulla voi olla korkeintaan kaksi lasta ja yleisillä puilla voi olla enemmän kuin kaksi lasta. Yleisten puiden solmun rakenne olisi erilainen kuin binääripuu.

Puiden sovellukset

Seuraavat ovat puiden sovellukset:

    Luonnostaan ​​hierarkkisten tietojen tallentaminen:Puita käytetään tietojen tallentamiseen hierarkkiseen rakenteeseen. Esimerkiksi tiedostojärjestelmä. Levyasemalle tallennettu tiedostojärjestelmä, tiedosto ja kansio ovat luonnollisesti hierarkkisten tietojen muodossa ja tallennetaan puiden muodossa.Järjestä tiedot:Sitä käytetään tietojen järjestämiseen tehokkaaseen lisäämiseen, poistamiseen ja etsimiseen. Esimerkiksi binääripuulla on logN aika elementin etsimiseen.Kokeile:Se on erityinen puu, jota käytetään sanakirjan tallentamiseen. Se on nopea ja tehokas tapa dynaamiseen oikeinkirjoituksen tarkistamiseen.Pino:Se on myös puutietorakenne, joka on toteutettu taulukoiden avulla. Sitä käytetään prioriteettijonojen toteuttamiseen.B-puu ja B+puu:B-Tree ja B+Tree ovat puutietorakenteita, joita käytetään indeksoinnin toteuttamiseen tietokantoissa.Reititystaulukko:Puutietorakennetta käytetään myös tietojen tallentamiseen reitittimien reititystaulukoihin.

Puun tietorakenteen tyypit

Seuraavat ovat puutietorakenteen tyypit:

    Yleinen puu:Yleinen puu on yksi puutietorakenteen tyypeistä. Yleisessä puussa solmussa voi olla joko 0 tai enintään n solmua. Solmun astetta (solmujen lukumäärää, jonka solmu voi sisältää) ei ole rajoitettu. Yleisen puun ylintä solmua kutsutaan juurisolmuksi. Pääsolmun lapsia kutsutaan nimellä alipuut .
    Puu
    Voi olla n alipuiden lukumäärä yleisessä puussa. Yleisessä puussa alipuut ovat järjestämättömiä, koska alipuun solmuja ei voi järjestää.
    Jokaisella ei-tyhjällä puulla on alaspäin suuntautuva reuna, ja nämä reunat on yhdistetty solmuihin, jotka tunnetaan nimellä lapsisolmut . Juurisolmu on merkitty tasolla 0. Solmut, joilla on sama vanhempi, tunnetaan nimellä sisarukset . Binäärinen puu :Tässä binäärinimi itsessään ehdottaa kahta numeroa, eli 0 ja 1. Binääripuussa jokaisella puun solmulla voi olla korkeintaan kaksi alisolmua. Tässä äärimmäinen tarkoittaa, onko solmussa 0 solmua, 1 solmu vai 2 solmua.
    Puu
    Saat lisätietoja binääripuusta napsauttamalla alla olevaa linkkiä:
    https://www.javatpoint.com/binary-tree Binäärihakupuu :Binäärihakupuu on epälineaarinen tietorakenne, jossa yksi solmu on yhteydessä n solmujen määrä. Se on solmupohjainen tietorakenne. Solmu voidaan esittää binäärihakupuussa, jossa on kolme kenttää, eli dataosa, vasen lapsi ja oikea lapsi. Solmu voidaan yhdistää binäärihakupuun kahteen äärimmäiseen lapsisolmuun, joten solmu sisältää kaksi osoitinta (vasen lapsiosoitin ja oikea lapsiosoitin).
    Jokaisen vasemman alipuun solmun tulee sisältää arvo, joka on pienempi kuin juurisolmun arvo, ja oikean alipuun jokaisen solmun arvon on oltava suurempi kuin juurisolmun arvo.

Solmu voidaan luoda käyttäjän määrittämän tietotyypin avulla rakenne, kuten alla:

 struct node { int data; struct node *left; struct node *right; } 

Yllä oleva on solmurakenne, jossa on kolme kenttää: tietokenttä, toinen kenttä on solmutyypin vasen osoitin ja kolmas kenttä on solmutyypin oikea osoitin.

Saat lisätietoja binäärihakupuusta napsauttamalla alla olevaa linkkiä:

https://www.javatpoint.com/binary-search-tree

Se on yksi binääripuun tyypeistä, tai voimme sanoa, että se on muunnelma binäärihakupuusta. AVL-puu täyttää ominaisuuden binääripuu samoin kuin binäärihakupuu . Se on itsetasapainottava binäärihakupuu, jonka keksi Adelson Velsky Lindas . Tässä itsetasapainotuksella tarkoitetaan vasemman ja oikean alipuun korkeuksien tasapainottamista. Tämä tasapainotus mitataan tasapainottava tekijä .

Voimme pitää puuta AVL-puuna, jos puu noudattaa binäärihakupuuta sekä tasapainotustekijää. Tasapainotekijä voidaan määritellä vasemman alipuun ja oikean alipuun korkeuden välinen ero . Tasapainotustekijän arvon on oltava joko 0, -1 tai 1; siksi jokaisen AVL-puun solmun tasapainotustekijän arvon tulisi olla joko 0, -1 tai 1.

merkkijono n java

Saat lisätietoja AVL-puusta napsauttamalla alla olevaa linkkiä:

https://www.javatpoint.com/avl-tree

    Puna-musta puu

Puna-musta puu on binäärihakupuu. Red-Black-puun edellytyksenä on, että meidän pitäisi tietää binäärihakupuusta. Binäärihakupuussa vasemmanpuoleisen alipuun arvon tulee olla pienempi kuin kyseisen solmun arvon ja oikeanpuoleisen alipuun arvon tulee olla suurempi kuin kyseisen solmun arvo. Kuten tiedämme, binäärihaun aikamonimutkaisuus keskimääräisessä tapauksessa on log2n, paras tapaus on O(1) ja huonoin tapaus O(n).

Kun puulle suoritetaan mikä tahansa toiminto, haluamme puumme olevan tasapainossa niin, että kaikki toiminnot, kuten etsiminen, lisääminen, poistaminen jne., vievät vähemmän aikaa ja kaikki nämä toiminnot ovat aikamonimutkaisia. Hirsi2n.

Puna-musta puu on itsetasapainottava binäärihakupuu. AVL-puu on myös korkeutta tasapainottava binäärihakupuu miksi tarvitsemme punamusta puuta . AVL-puussa emme tiedä kuinka monta kiertoa puun tasapainottamiseen tarvittaisiin, mutta punamustassa puussa puun tasapainottamiseen tarvitaan enintään 2 kierrosta. Se sisältää yhden ylimääräisen bitin, joka edustaa joko solmun punaista tai mustaa väriä puun tasapainon varmistamiseksi.

    Splay-puu

Splay-puun tietorakenne on myös binäärihakupuu, jossa äskettäin käsitelty elementti sijoitetaan puun juuripaikkaan suorittamalla joitain kiertotoimintoja. Tässä, splaying tarkoittaa äskettäin käytettyä solmua. Se on a itse tasapainottuva binäärihakupuu, jolla ei ole eksplisiittistä tasapainoehtoa, kuten AVL puu.

Saattaa olla mahdollista, että leikkauspuun korkeus ei ole tasapainossa, eli sekä vasemman että oikean alipuun korkeus voi vaihdella, mutta leikkauspuun toiminnot ovat järjestyksessä rauhoittaa aika missä n on solmujen lukumäärä.

Splay-puu on tasapainoinen puu, mutta sitä ei voida pitää korkeustasapainoisena puuna, koska jokaisen toimenpiteen jälkeen suoritetaan kierto, joka johtaa tasapainoiseen puuhun.

    Treap

Treap-tietorakenne tuli Tree- ja Heap-tietorakenteesta. Joten se sisältää sekä Tree- että Heap-tietorakenteiden ominaisuudet. Binaarihakupuussa jokaisen vasemman alipuun solmun on oltava yhtä suuri tai pienempi kuin juurisolmun arvo ja jokaisen oikean alipuun solmun on oltava yhtä suuri tai suurempi kuin juurisolmun arvo. Keon tietorakenteessa sekä oikea että vasen alipuu sisältävät suurempia avaimia kuin juuri; siksi voimme sanoa, että juurisolmu sisältää pienimmän arvon.

Treap-tietorakenteessa jokaisella solmulla on molemmat avain ja etusijalla jossa avain on johdettu binaarihakupuusta ja prioriteetti keon tietorakenteesta.

The Treap tietorakenne noudattaa kahta alla annettua ominaisuutta:

  • Solmun oikea lapsi>=nykyinen solmu ja solmun vasen lapsi<=current node (binary tree)< li>
  • Minkä tahansa alipuun lapsien on oltava suurempia kuin solmu (kasa)
    B-puu

B-puu on tasapainoinen m-tie puu missä m määrittää puun järjestyksen. Tähän mennessä olemme lukeneet, että solmu sisältää vain yhden avaimen, mutta b-puussa voi olla useampi kuin yksi avain ja enemmän kuin 2 lasta. Se säilyttää aina lajitellut tiedot. Binääripuussa on mahdollista, että lehtisolmut voivat olla eri tasoilla, mutta b-puussa kaikkien lehtien solmujen on oltava samalla tasolla.

Jos järjestys on m, solmulla on seuraavat ominaisuudet:

  • Jokaisella b-puun solmulla voi olla maksimi m lapset
  • Vähimmäislapsilla lehtisolmussa on 0 lasta, juurisolmussa vähintään 2 lasta ja sisäisessä solmussa on vähintään m/2 lasta. Esimerkiksi m:n arvo on 5, mikä tarkoittaa, että solmussa voi olla 5 lasta ja sisäisissä solmuissa enintään 3 lasta.
  • Jokaisella solmulla on maksimiavaimet (m-1).

Juurisolmun tulee sisältää vähintään 1 avain ja kaikkien muiden solmujen tulee sisältää vähintään katto m/2 miinus 1 avaimet.