Najprej bomo razumeli binarno drevo in binarno iskalno drevo ločeno, nato pa si bomo ogledali razlike med binarnim drevesom in binarnim iskalnim drevesom.
Kaj je binarno drevo?
A Binarno drevo je
Binarno drevo je mogoče predstaviti kot:
Na zgornji sliki lahko opazimo, da vsako vozlišče vsebuje največ 2 otroka. Če katero koli vozlišče ne vsebuje levega ali desnega otroka, bi bila vrednost kazalca glede na tega otroka NULL.
Osnovna terminologija, ki se uporablja v binarnem drevesu, je:
V binarnem drevesu obstaja eno drevo, znano kot a popolno binarno drevo . Je drevo, v katerem morajo vsa notranja vozlišča vsebovati dve vozlišči, vsa listna vozlišča pa morajo biti na isti globini. V primeru popolnega binarnega drevesa se lahko skupno število vozlišč v binarnem drevesu izračuna z uporabo naslednje enačbe:
n = 2m+1-1
kjer je n število vozlišč, m je globina vozlišča.
Kaj je binarno iskalno drevo?
A Binarno iskalno drevo je drevo, ki sledi nekemu vrstnemu redu za razporeditev elementov, medtem ko binarno drevo ne sledi nobenemu vrstnemu redu. V binarnem iskalnem drevesu mora biti vrednost levega vozlišča manjša od nadrejenega vozlišča, vrednost desnega vozlišča pa mora biti večja od nadrejenega vozlišča.
Razumejmo koncept binarnega iskalnega drevesa skozi primere.
Na zgornji sliki lahko opazimo, da je vrednost korenskega vozlišča 15, kar je večje od vrednosti vseh vozlišč v levem poddrevesu. Vrednost korenskega vozlišča je manjša od vrednosti vseh vozlišč v desnem poddrevesu. Zdaj se premaknemo na levi podrejeni del korenskega vozlišča. 10 je večje od 8 in manjše od 12; izpolnjuje tudi lastnost binarnega iskalnega drevesa. Zdaj se premaknemo na desni podrejeni del korenskega vozlišča; vrednost 20 je večja od 17 in manjša od 25; izpolnjuje tudi lastnost binarnega iskalnega drevesa. Zato lahko rečemo, da je zgoraj prikazano drevo binarno iskalno drevo.
Zdaj, če spremenimo vrednost 12 v 16 v zgornjem binarnem drevesu, moramo ugotoviti, ali je še vedno binarno iskalno drevo ali ne.
Vrednost korenskega vozlišča je 15, kar je večje od 10, vendar manjše od 16, zato ne izpolnjuje lastnosti binarnega iskalnega drevesa. Zato ni binarno iskalno drevo.
Operacije na binarnem iskalnem drevesu
Na binarnem iskalnem drevesu lahko izvajamo operacije vstavljanja, brisanja in iskanja. Razumejmo, kako poteka iskanje pri binarnem iskanju. Spodaj je prikazano binarno drevo, na katerem moramo izvesti operacijo iskanja:
Recimo, da moramo poiskati 10 v zgornjem binarnem drevesu. Za izvedbo binarnega iskanja bomo upoštevali vsa cela števila v razvrščeni matriki. Najprej ustvarimo popoln seznam v iskalnem prostoru in vse številke bodo obstajale v iskalnem prostoru. Iskalni prostor je označen z dvema kazalcema, to sta začetek in konec. Matriko zgornjega binarnega drevesa lahko predstavimo kot
Najprej bomo izračunali srednji element in ga primerjali z elementom, ki ga želimo iskati. Srednji element se izračuna z uporabo n/2. Vrednost n je 7; zato je srednji element 15. Srednji element ni enak iskanemu elementu, tj. 10.
Opomba: če je element, ki ga iščete, manjši od srednjega elementa, bo iskanje izvedeno v levi polovici; drugače bo iskanje potekalo na desni polovici. V primeru enakosti je element najden.
Ker je element, ki ga je treba iskati, manjši od srednjega elementa, bo iskanje izvedeno na levi matriki. Zdaj je iskanje zmanjšano na polovico, kot je prikazano spodaj:
Srednji element v levem nizu je 10, kar je enako iskanemu elementu.
Časovna zapletenost
V binarnem iskanju je n elementov. Če srednji element ni enak iskanemu elementu, se iskalni prostor zmanjša na n/2 in bomo nadaljevali z zmanjševanjem iskalnega prostora za n/2, dokler elementa ne najdemo. V celotnem zmanjšanju, če se premaknemo od n do n/2 do n/4 in tako naprej, bo trajalo log2n korakov.
Razlike med binarnim drevesom in binarnim iskalnim drevesom
Osnova za primerjavo | Binarno drevo | Binarno iskalno drevo |
---|---|---|
Opredelitev | Binarno drevo je nelinearna podatkovna struktura, v kateri ima lahko vozlišče največ dva otroka, kar pomeni, da ima lahko vozlišče 0, 1 ali največ dva otroka. Binarno iskalno drevo je urejeno binarno drevo, v katerem se upošteva določen vrstni red za organizacijo vozlišč v drevesu. | |
Struktura | Struktura binarnega drevesa je, da je prvo vozlišče ali najvišje vozlišče znano kot korensko vozlišče. Vsako vozlišče v binarnem drevesu vsebuje levi in desni kazalec. Levi kazalec vsebuje naslov levega poddrevesa, medtem ko desni kazalec vsebuje naslov desnega poddrevesa. | Binarno iskalno drevo je ena od vrst binarnega drevesa, ki ima vrednost vseh vozlišč v levem poddrevesu manjšo ali enako korenskemu vozlišču, vrednost vseh vozlišč v desnem poddrevesu pa je večja ali enaka vrednost korenskega vozlišča. |
Operacije | Operacije, ki jih je mogoče implementirati na binarnem drevesu, so vstavljanje, brisanje in prečkanje. | Binarna iskalna drevesa so razvrščena binarna drevesa, ki omogočajo hitro vstavljanje, brisanje in iskanje. Iskanje večinoma izvaja binarno iskanje, saj so vsi ključi urejeni v razvrščenem vrstnem redu. |
vrste | Štiri vrste binarnih dreves so polno binarno drevo, popolno binarno drevo, popolno binarno drevo in razširjeno binarno drevo. | Obstajajo različne vrste binarnih iskalnih dreves, kot so drevesa AVL, drevesa Splay, drevesa Tango itd. |