Beremo linearne podatkovne strukture, kot so polje, povezan seznam, sklad in čakalna vrsta, v kateri so vsi elementi razvrščeni zaporedno. Za različne vrste podatkov se uporabljajo različne podatkovne strukture.
Pri izbiri strukture podatkov se upoštevajo nekateri dejavniki:
Drevo je tudi ena izmed podatkovnih struktur, ki predstavljajo hierarhične podatke. Recimo, da želimo prikazati zaposlene in njihove položaje v hierarhični obliki, potem jo lahko predstavimo, kot je prikazano spodaj:
Zgornje drevo prikazuje organizacijska hierarhija nekega podjetja. V zgornji strukturi je Janez ali je direktor družbe, John pa ima dva neposredna podrejena, imenovana kot Steve in Rohan . Steve ima imenovane tri neposredne podrejene Lee, Bob, Ella kje Steve je vodja. Bob ima imenovana dva neposredna podrejena naj in Emma . Emma ima dva imenovana neposredna poročila Tom in Raj . Tom ima enega neposrednega poročevalca račun . Ta posebna logična struktura je znana kot a Drevo . Njegova struktura je podobna pravemu drevesu, zato se imenuje a Drevo . V tej strukturi je korenina je na vrhu, njene veje pa se premikajo navzdol. Zato lahko rečemo, da je drevesna podatkovna struktura učinkovit način shranjevanja podatkov na hierarhični način.
Razumejmo nekaj ključnih točk podatkovne strukture drevesa.
- Drevesna podatkovna struktura je definirana kot zbirka predmetov ali entitet, znanih kot vozlišča, ki so med seboj povezani, da predstavljajo ali simulirajo hierarhijo.
- Drevesna podatkovna struktura je nelinearna podatkovna struktura, ker ne shranjuje na zaporedni način. Gre za hierarhično strukturo, saj so elementi v drevesu razporejeni na več ravneh.
- V podatkovni strukturi drevesa je najvišje vozlišče znano kot korensko vozlišče. Vsako vozlišče vsebuje nekaj podatkov, podatki pa so lahko katere koli vrste. V zgornji drevesni strukturi vozlišče vsebuje ime zaposlenega, zato bi bil tip podatkov niz.
- Vsako vozlišče vsebuje nekaj podatkov in povezavo ali referenco drugih vozlišč, ki jih lahko imenujemo podrejeni.
Nekaj osnovnih izrazov, uporabljenih v podatkovni strukturi Tree.
Oglejmo si drevesno strukturo, ki je prikazana spodaj:
V zgornji strukturi je vsako vozlišče označeno z neko številko. Vsaka puščica, prikazana na zgornji sliki, je znana kot a povezava med obema vozliščema.
Lastnosti drevesne podatkovne strukture
Na podlagi lastnosti podatkovne strukture drevesa so drevesa razvrščena v različne kategorije.
Izvedba drevesa
Drevesno podatkovno strukturo je mogoče ustvariti z dinamičnim ustvarjanjem vozlišč s pomočjo kazalcev. Drevo v pomnilniku je lahko predstavljeno, kot je prikazano spodaj:
Zgornja slika prikazuje predstavitev drevesne podatkovne strukture v pomnilniku. V zgornji strukturi vozlišče vsebuje tri polja. Drugo polje hrani podatke; prvo polje shranjuje naslov levega otroka, tretje polje pa shranjuje naslov desnega otroka.
V programiranju lahko strukturo vozlišča definiramo kot:
struct node { int data; struct node *left; struct node *right; }
Zgornjo strukturo je mogoče definirati samo za binarna drevesa, ker ima lahko binarno drevo največ dva otroka, generična drevesa pa imajo lahko več kot dva otroka. Struktura vozlišča za generična drevesa bi bila drugačna v primerjavi z binarnim drevesom.
Aplikacije dreves
Naslednje so aplikacije dreves:
Vrste podatkovne strukture drevesa
Drevesne podatkovne strukture so naslednje vrste:
Lahko obstaja n število poddreves v splošnem drevesu. V splošnem drevesu so poddrevesa neurejena, saj vozlišč v poddrevesu ni mogoče razporediti.
Vsako neprazno drevo ima rob navzdol, ti robovi pa so povezani z vozlišči, imenovanimi otroška vozlišča . Korensko vozlišče je označeno z nivojem 0. Vozlišča, ki imajo istega starša, so znana kot bratje in sestre .
Če želite izvedeti več o binarnem drevesu, kliknite spodnjo povezavo:
https://www.javatpoint.com/binary-tree
Vsako vozlišče v levem poddrevesu mora vsebovati vrednost, manjšo od vrednosti korenskega vozlišča, vrednost vsakega vozlišča v desnem poddrevesu pa mora biti večja od vrednosti korenskega vozlišča.
Vozlišče je mogoče ustvariti s pomočjo uporabniško definiranega podatkovnega tipa, znanega kot struktura, kot je prikazano spodaj:
niz struktur v jeziku c
struct node { int data; struct node *left; struct node *right; }
Zgoraj je struktura vozlišča s tremi polji: podatkovno polje, drugo polje je levi kazalec vrste vozlišča, tretje polje pa je desni kazalec vrste vozlišča.
Če želite izvedeti več o binarnem iskalnem drevesu, kliknite spodnjo povezavo:
https://www.javatpoint.com/binary-search-tree
Je ena od vrst binarnega drevesa ali lahko rečemo, da je različica binarnega iskalnega drevesa. Drevo AVL izpolnjuje lastnost binarno drevo kot tudi od binarno iskalno drevo . To je samouravnotežno binarno iskalno drevo, ki ga je izumil Adelson Velsky Lindas . Tukaj samouravnoteženje pomeni uravnoteženje višin levega poddrevesa in desnega poddrevesa. To uravnoteženje se meri v smislu izravnalni faktor .
Drevo lahko obravnavamo kot drevo AVL, če drevo upošteva binarno iskalno drevo in tudi faktor uravnoteženja. Faktor izravnave je mogoče definirati kot razlika med višino levega poddrevesa in višino desnega poddrevesa . Vrednost faktorja izravnave mora biti 0, -1 ali 1; zato mora imeti vsako vozlišče v drevesu AVL vrednost izravnalnega faktorja 0, -1 ali 1.
Če želite izvedeti več o drevesu AVL, kliknite spodnjo povezavo:
https://www.javatpoint.com/avl-tree
Rdeče-črno drevo je binarno iskalno drevo. Predpogoj za rdeče-črno drevo je, da poznamo binarno iskalno drevo. V binarnem iskalnem drevesu mora biti vrednost levega poddrevesa manjša od vrednosti tega vozlišča, vrednost desnega poddrevesa pa večja od vrednosti tega vozlišča. Kot vemo, je časovna kompleksnost binarnega iskanja v povprečnem primeru log2n, najboljši primer je O(1), najslabši primer pa O(n).
Ko se na drevesu izvaja katera koli operacija, želimo, da je naše drevo uravnoteženo, tako da vse operacije, kot so iskanje, vstavljanje, brisanje itd., trajajo manj časa, vse te operacije pa bodo imele časovno zapletenost dnevnik2n.
Rdeče-črno drevo je samouravnoteženo binarno iskalno drevo. Drevo AVL je torej tudi binarno iskalno drevo za uravnoteženje višine zakaj potrebujemo rdeče-črno drevo . Pri drevesu AVL ne vemo, koliko rotacij bi bilo potrebnih za uravnoteženje drevesa, pri rdeče-črnem drevesu pa sta za uravnoteženje drevesa potrebni največ 2 rotaciji. Vsebuje en dodaten bit, ki predstavlja rdečo ali črno barvo vozlišča, da se zagotovi uravnoteženje drevesa.
Podatkovna struktura razpršenega drevesa je tudi binarno iskalno drevo, v katerem je nedavno dostopan element postavljen na korenski položaj drevesa z izvajanjem nekaterih operacij vrtenja. tukaj, raztezanje pomeni nedavno dostopno vozlišče. Je samouravnoteženje binarno iskalno drevo, ki nima eksplicitnega pogoja ravnotežja, kot je AVL drevo.
Morda obstaja možnost, da višina raztegnjenega drevesa ni uravnotežena, tj. višina levega in desnega poddrevesa se lahko razlikujeta, vendar se operacije v raztegnjenem drevesu izvajajo v vrstnem redu miren čas kje n je število vozlišč.
Splay drevo je uravnoteženo drevo, vendar ga ni mogoče obravnavati kot višinsko uravnoteženo drevo, ker se po vsaki operaciji izvede rotacija, ki vodi do uravnoteženega drevesa.
Podatkovna struktura Treap je nastala iz podatkovne strukture Tree in Heap. Torej obsega lastnosti podatkovnih struktur Tree in Heap. V binarnem iskalnem drevesu mora biti vsako vozlišče na levem poddrevesu enako ali manjše od vrednosti korenskega vozlišča in vsako vozlišče na desnem poddrevesu mora biti enako ali večje od vrednosti korenskega vozlišča. V podatkovni strukturi kopice tako desno kot levo poddrevo vsebujeta večje ključe kot koren; zato lahko rečemo, da korensko vozlišče vsebuje najnižjo vrednost.
V podatkovni strukturi treap ima vsako vozlišče oboje ključ in prioriteta kjer ključ izhaja iz binarnega iskalnega drevesa, prioriteta pa iz podatkovne strukture kopice.
The Treap struktura podatkov sledi dvema lastnostima, ki sta navedeni spodaj:
- Desni podrejeni vozlišča>=trenutno vozlišče in levi podrejeni del vozlišča<=current node (binary tree)< li>
- Otroci katerega koli poddrevesa morajo biti večji od vozlišča (kupa) =current>
B-drevo je uravnoteženo m-način drevo kje m določa vrstni red drevesa. Do zdaj smo prebrali, da vozlišče vsebuje samo en ključ, vendar ima lahko b-drevo več kot en ključ in več kot 2 otroka. Vedno vzdržuje razvrščene podatke. V binarnem drevesu je možno, da so listna vozlišča na različnih ravneh, v b-drevesu pa morajo biti vsa listna vozlišča na isti ravni.
Če je vrstni red m, ima vozlišče naslednje lastnosti:
- Vsako vozlišče v b-drevesu ima lahko največ m otroci
- Za minimalne otroke ima listno vozlišče 0 otrok, korensko vozlišče ima najmanj 2 otroka in notranje vozlišče ima najmanjšo zgornjo mejo m/2 otrok. Na primer, vrednost m je 5, kar pomeni, da ima lahko vozlišče 5 otrok, notranja vozlišča pa lahko vsebujejo največ 3 otroke.
- Vsako vozlišče ima največ (m-1) ključev.
Korensko vozlišče mora vsebovati vsaj 1 ključ, vsa druga vozlišča pa morajo vsebovati vsaj strop m/2 minus 1 ključi.