2-3-4 (ali 2-4) drevo je primer iskalnega drevesa (ne dvojiškega):
Kaj je 2-3-4 drevo?
2-3-4 (ali 2-4) drevo je primer iskalnega drevesa (ne dvojiškega):
Kaj je 2-3-4 drevo?
2-3-4 drevo je B - drevo, reda 4. Kar pomeni, da ima vsako vozlišče lahko 2, 3 ali 4 sinove in en element manj kot ima sinov. Torej je v vsakem vozlišču lahko:
Podobno kot pri B – drevesu, tudi pri 2-3-4 lahko elemente iščemo, vstavimo ali brišemo.
Operacija iskanje
Iskanje elementa v 2-3-4 drevesu je zelo podobno iskanju elementa v dvojiškem iskalnem drevesu. Z iskanjem začnemo v korenu drevesa. Razlika je samo v tem, da pri dvojiškem drevesu primerjamo samo z enim elementom, pri 2-3-4 drevesu pa zaporedoma primerjamo z elementi, ki so v danem vozlišču. Če iskalni element ni v trenutnem vozlišču, določimo pot (po katerem sinu) po kateri nadaljujemo z iskanjem. Če v drevesu ni sina z območjem, to drevo ne vsebuje iskalnega elementa.
Primer:
V danem 2-3-4 drevesu poišči elementa 57 in 75.
Operacija vstavljanje
Podobno kot pri operaciji iskanje, začnemo v korenu drevesa.
1. Če trenutno vozlišče vsebuje tri elemente:
2. Poiščemo sina, kateri ustreza intervalu števila, ki ga želimo vstaviti.
3. Če je sin vozlišča iz 2. točke prazno vozlišče, vstavimo element v trenutno vozlišče. Sicer pa nadaljujemo na naslednjem ustreznem sinu in ponovimo vse od 1. točke.
Primer vstavljanja
Nadaljevanje...
Operacija brisanje
Operacija brisanje je težja kot operaciji iskanje in vstavljanje.
Najprej element, ki ga želimo zbrisati, poiščemo. Potem pa ločimo dva primera, glede na to kje se element, ki ga želimo izbrisati, nahaja:
a) Element, ki ga želimo izbrisati se nahaja v listu drevesa. Potem nastopi eden od naslednjih dveh primerov:
1. Vsaj eden izmed bratov vsebuje najmanj 2 elementa. Najprej element, ki ga želimo zbrisati, zbrišemo in tako dobimo prazno vozlišče. Potem vzamemo ustrezen element iz očeta tega vozlišča in ga vstavimo v prazno vozlišče. Nato pa iz sosednjega brata vzamemo ustrezen element in ga vstavimo v očeta.
2. Noben od bratov nima vsaj dveh elementov. Potem ustrezen element odstranimo. Tako dobimo prazno vozlišče, v katerega pa shranimo utrezni element iz očeta. Potem pa to vozlišče združimo z ustreznim bratom.
b) Element, ki ga želimo izbrisati se ne nahaja v listu drevesa. V tem primeru ga nadomestimo z maksimalnim elementom ustreznega levega poddrevesa.
Po vseh teh zamenjavah elementov in združevanju vozlišč, drevo še vedno ostane iskalno.
1. primer brisanja
2. primer brisanja
3. primer brisanja
Nadaljevanje...
Nadaljevanje
Nadaljevanje
Preslikava med 2-3-4 in rdeče-črnim drevesom
Če imamo dano 2-3-4 drevo in bi rajši delali z rdeče - črnimi drevesi, lahko naredimo naslednjo preslikavo:
vozlišče s tremi elementi preslikamo v tri vozlišča. Črno (ki kot podatek vsebuje srednji element) je oče rdečima sinovoma. Ta imata za poddrevesi vsak po dve prvotni poddrevesi.
vozlišče z dvema elementoma preslikamo v dve vozlišči. Črno, v katerega damo en element iz prvotnega vozlišča. Ta je oče rdečemu sinu, v katerega damo preostali element iz prvotnega vozlišča, in enemu prvotnemu poddrevesu. Rdeči sin ima za poddrevesi ustrezni prvotni poddrevesi.
S tem postopkom dobimo vsaj eno rdeče - črno drevo. Obratno pa preslikava ni enolična.
Pogoj rdeče – črnih dreves: