Professional Documents
Culture Documents
05 Zuhaitzak
05 Zuhaitzak
Zuhaitzak
2
Zuhaitzak
Zergatik dira garrantzitsuak? Helburuak
Gure helburua:
Elementu talde batean, oinarrizko eragiketak
ahalik eta denbora txikienean exekutatzea:
- Bilaketa
- Ezabaketa
- Txertaketa
3
Zuhaitzak
Zergatik dira garrantzitsuak? Helburuak
ZUHAITZAK
Elementu baten bilaketa (eduki edo posizio) O(log n)
Elementu baten txertaketa O(log n)
4
Funtzioen hazkundea f(n)
5
Zuhaitzak
Zer dira? Ezaugarriak
a a
b e b e
f g i j f g i j
k k
b c d e
f g h i j
b c d e
f g h i j
8
Zuhaitzak
Definizio errekurtsiboa
a
b c d e
f g h i j
b c d e
f g h i j
• Ondorioak:
– Zuhaitzaren adabegi bakoitzak azpizuhaitz bat
definitzen du (erro gisa adabegi hori daukana)
– Erlazio estua dago adabegi eta azpizuhaitzen artean.
10
Zuhaitzak
Terminologia eta oinarrizko propietateak
11
Zuhaitzak
Terminologia eta oinarrizko propietateak
• Ahaidetasuna
– “g” adabegia “u” adabegiaren gurasoa bada, orduan
“u” adabegia “g” adabegiaren umea da
– Bi adabegi guraso beraren umeak badira, anaiak
direla esaten da.
• Barne eta kanpo adabegiak:
– Barne adabegiak ume bat edo gehiago duten
adabegiak dira
– Kanpo adabegiak umeak ez dituzten adabegiak dira
– Kanpo adabegiei hostoak deritzaie
12
Zuhaitzak
Terminologia eta oinarrizko propietateak
• Bide bat:
- Zuhaitzaren bi adabegi lotzen dituzten arku-sekuentzia da.
• 2 adabegien arteko bidearen luzera
– Bi adabegien arteko arku kopurua
• Adabegi baten tamaina
– Ondorengo adabegien kopurua (bera barne)
• Zuhaitzaren tamaina
– Erro adabegiaren ondorengoen kopurua
13
Zuhaitzak
Terminologia eta oinarrizko propietateak
• “a” adabegi baten sakonera (3 definizio)
– bidearen luzera errotik “a” adabegiraino
– “a” adabegiaren aurrekoen kopurua (bera izan ezik)
– Definizio errekurtsiboa
• Erro adabegia bada: sakonera = 0 (kasu nabaria)
• Beste kasuan: sakonera 1 + gurasoa adabegiaren sakonera
• “a” adabegi baten altuera (maila) (2 definizio)
– “a” adabegitik “hosto” sakoneraino doan bidearen luzera.
– Definizio errekurtsiboa
• Hosto bat bada (kanpo adabegia): Altuera = 0 (Kasu nabaria)
• Beste kasuan: altuera 1 + bere umeen altuera maximoa
14
Zuhaitzak
Terminologia eta oinarrizko propietateak
15
Zuhaitzak
Terminologia eta oinarrizko propietateak
a
Barne
Adab. Altuera Sakonera Tamaina Kanpo
b c d e
a 3 0 11 Barne
b 1 1 3 Barne
f g h i j
c 0 1 1 Kanpo
d 1 1 2 Barne
k
e 2 1 4 Barne
f 0 2 1 Kanpo
Zuhaitzaren tamaina: 11 g 0 2 1 Kanpo
h 0 2 1 Kanpo
Zuhaitzaren altuera: 3
i 0 2 1 Kanpo
Zuhaitzaren sakonera: 3 j 1 2 2 Barne
k 0 3 1 Kanpo
16
Zuhaitz bitarrak
• Zuhaitz bitarrak:
– Zuhaitz bitar bat adabegi bakoitzak gehienez
bi ume dituen zuhaitz bat da
• Lehenego ume adabegiari ezkerra deritzaio
• Bigarren ume adabegiari eskubia deritzaio
– Zuhaitz bitarrak ere definitu daitezke era
errekurtsiboan. Kasu honetan esaten da
zuhaitza hutsa dela edo osatuta dagoela:
• Erroa adabegiaz
• Azpizuhaitz ezkerraz
• Azpizuhaitz eskubiaz
17
Zuhaitz bitarrak
Adibideak
Adibideak: (a+b/c)*(d-e*f)
*
+ -
a / d *
b c e f
18
Zuhaitz bitarren inplementazioa
BinTree:egitura dinamikoa
root
actual
root=1;
actual=3
public class BinTree<T>{
int root; //erroaren posizioa
BTNode<T>[] tree;
int actual;
}
21
Zuhaitz bitarren inplementazioa
BinTree klasearen metodoak
class BinTree<T>
•Atributua: BTNode<T> root;
•Atributua: BTNode<T> actual; root
•Atributua: BTNode<T> father;
•Metodoak: father
void goLeft();
void goRight(); actual
void goBrother();
void goRoot();
void insertRoot(T o);
void insertLeftChild(T o);
void insertRightChild(T o);
T getActual();
22
BinTree
Metodoak Java-n
Kontsulta-metodoak Esanahia
boolean isInternal() true itzultzen du actual barne adabegia bada
boolean isExternal() true itzultzen du actual kanpo adabegia bada (hostoa)
boolean isRoot() true itzultzen du actual adabegia erroa bada
int size() Zuhaitzaren tamaina itzultzen du
boolean isEmpty() true itzultzen du zuhaitza hutsa bada
T getActual() actual adabegiaren edukia itzultzen du
void setActual(T o) actual adabegiaren edukian o objektua ipintzen du23
BinTree
Metodoak Java-n
24
Zuhaitz bitarrak
Zuhaitz baten sorkuntza, BinTree klasearen bidez
25
Zuhaitz bitarrak
Ariketa I
13 92
6 17 81 16
22 2 20 3
56 31
I atala : Espezifikazioa/Parametrizazioa
✔Sarrera:
Zuhaitz bat eta x zenbaki oso bat
✔Irteera:
Balio boolear bat; true izango da zuhaitzaren
adabegiren batek x balioa badu, eta false kontrako
kasuan.
27
Zuhaitzen errepresentazioa
Ariketa I
✔Kasu nabaria(k)
➙ Zuhaitza hutsa bada orduan false itzuli
➙ Zuhaitza hutsa ez bada eta bere erroa bilatzen ari garen
elementuaren berdina bada, orduan true itzuli
✔Kasu orokorra(k)
➙ Zuhaitza hutsa ez bada eta bere erroa bilatzen ari garen
elementuaren desberdina bada:
•true itzuli elementua ezkerreko edo eskubiko
azpizuhaitzean agertzen bada;
•false, bestela.
28
Zuhaitzen errepresentazioa
Ariketa I
find(x)
IF zuhaitza EZ hutsa THEN
IF zuhaitzaren erroa=x THEN
true tzuli
ELSE
itzuli (find (azpizuhaitz ezkerra, x) EDO
find (azpizuhaitz eskuina, x) )
ELSE
false itzuli
29
Zuhaitzen errepresentazioa
Ariketa I: murgiltze-arazoa
boolean find(T x)
30
Zuhaitzen errepresentazioa
Ariketa I
IV atala: Programazioa
31
Zuhaitzen errepresentazioa
Errekurtsioaren 3 oinarrizko erregelak
32
Zuhaitzen errepresentazioa
Ariketa II
5 3
Adibidea: binTree.evaluate()=12 33
Zuhaitzen errepresentazioa
Ariketa II
I atala : Espezifikazioa/Parametrizazioa
✔Sarrera:
Zuhaitz bitar bat espresio aritmetiko baten errepresentazioarekin
✔Irteera:
Zuhaitzaren espresioaren emaitza.
34
Zuhaitzen errepresentazioa
Ariketa II
✔Kasu nabariak
➙ Zuhaitzahutsa bada, 0 itzuli
➙ Zuhaitzak erroan zenbaki oso bat badauka orduan itzuli
zenbakia
✔Kasu orokorrak
➙ Zuhaitzak erroan eragile bat badauka
➙azpizuhaitz ezkerra ebaluatu
➙azpizuhaitz eskubia ebaluatu
➙erroaren eragilea aplikatu lortutako emaitzei 35
Zuhaitzen errepresentazioa
Ariketa II
13 92
6 17 81 13
22 13 20 3
13 31
binTree.count(13)=4
38
Zuhaitzen adabegiak “bisitatu”
Zuhaitz batean egiten den ohiko eragiketa bat adabegi guztietan
eragiketa bat exekutatzea izaten da.
1. Aurre-Ordenan
Erroa bisitatu
Ezkerreko azpizuhaitza aurre-ordenan korritu
Eskubiko azpizuhaitza aurre-ordenan korritu
2. Post-Ordenan
Ezkerreko azpizuhaitza post-ordenan korritu
Eskubiko azpizuhaitza post-ordenan korritu
Erroa bisitatu
3. In-Ordenan
Ezkerreko azpizuhaitza in-ordenan korritu
Erroa bisitatu
Eskubiko azpizuhaitza in-ordenan korritu
39
Zuhaitz bitarrak
1º
Aurre-ordenan “bisitatu” 2º 3º
Aurre-ordenan (Def)
a
- Lehendabizi adabegia
prozesatzen da
b e
- Jarraian bere umeak
errekurtsiboki aurre-ordenan
f g i j prozesatzen dira
• Erabilpena
– Ordenazio lineal bat lortu nahi
k dugunean, guraso-adabegia beti
bere umeak baino lehenagoko
agerpenarekin.
– Adib.: liburu baten kapituluak
40
Zuhaitz bitarrak Aurre-ordenan
1. Lehendabizi adabegia (a)
Aurre-ordenean “bisitatu” 2. Azpizuhaitz ezkerra
1. Lehendabizi adabegia (b)
a 2. Azpizuhaitz ezkerra
1. Lehendabizi . adabegia (f)
2. Azpizuhaitz. ezkerra (null)
3. Azpizuhaitz eskubia (null)
3. Azpizuhaitz eskubia
1. Lehend. adabegia (g)
b 2. Azpizuhaitz ezkerra (null)
e 3. Azpizuhaitz eskubia (null)
3. Azpizuhaitz eskubia
1. Lehendabizi adabegia (e)
f g i j 2. Azpizuhaitz ezkerra
1. Lehendabizi adabegia (i)
2. Azpizuhaitz ezkerra (null)
3. Azpizuhaitz eskubia (null)
k 3. Azpizuhaitz eskubia
1. Lehendabizi adabegia (j)
2. Azpizuhaitz ezkerra (null)
3. Azpizuhaitz eskubia
1. Lehend. adabegia (k)
Adabegiak prozesatzeko ordena: 2. Azp. ezkerra (null)
3. Azp. eskubia (null)
a,b,f,g,e,i,j,k 41
Zuhaitz bitarrak
Ariketa III: Aurre-ordenan “bisitatu”
I atala : Espezifikazioa/Parametrizazioa
✔Sarrera:
Zuhaitz bitarra
✔Irtera:
Zuhaitzaren elementu guztien inprimaketa aurre-ordenan.
42
Zuhaitz bitarrak
Ariketa III: Aurre-ordenan “bisitatu”
void AurreOrden(Node)
43
Zuhaitz bitarrak
Ariketa III: Aurre-ordenan “bisitatu”
IV atala : Programazioa
Post-ordenan “bisitatu” 1º 2º
Post-ordenan (Def)
- Lehendabizi bere umeak
a errekurtsiboki post-ordenan
prozesatzen dira
b e - Jarraian adabegia
prozesatzen da
f g i j
• Erabilpena
– Guraso adabegiaren
problema ebazteko, lehendabizi
k bere umeen problema ebatzi
behar denean
Adibidea: Direktorio baten
tamaina fitxategi sistema
batean.
45
Zuhaitz bitarrak Post-ordenean
1. Zuhaitz ezkerra
Post-ordenan “bisitatu” 1. Zuhaitz ezkerra
1.Zuhaitz ezkerra (null)
2. Zuhaitz eskubia (null)
a 3. Adabegia (f)
2. Zuhaitz eskubia
1.Zuhaitz ezkerra (null)
2. Zuhaitz eskubia (null)
3. Adabegia (g)
3. Adabegia (b)
b e 2. Zuhaitz eskubia
1. Zuhaitz ezkerra
1. Zuhaitz ezkerra (null)
f g i j 2. Zuhitz eskubia (null)
3. Adabegia (i)
2. Zuhaitz eskubia
1. Zuhaitz ezkerra (null)
k 2. Zuhaitz eskubia (null)
1. Zuhaitz ezkerra. (null)
2. Zuhaitz eskubia (null)
3. Adabegia (null) (k)
3. Adabegia (j)
Adabegiak prozesatzen diren ordena: 3. Adabegia (e)
3. Adabegia (a)
f,g,b,i,k,j,e,a 46
2º
Zuhaitz bitarrak
In-ordenan “bisitatu”: (ordena simetrikoan) 1º 3º
In-ordenan (Def)
- Lehendabizi ezkerreko
a
zuhaitza prozesatzen da
- Jarraian uneko adabegia
b e - Azkenik eskubiko zuhaitza
• Erabilpena
f g i j – Gurasoa adabegia bere bi
umeen artean prozesatu behar
denean.
k – Adibidea: Espresio algebraiko
bat sortu zuhaitz baten
errepresentaziotik.
47
Zuhaitz bitarrak
In-ordenan “bisitatu” In-ordenan
1. Zuhaitz ezkerra
1. Zuhaitz ezkerra
a 1.Zuhaitz ezkerra (null)
2. Adabegia (f)
3. Zuhaitz eskubia (null)
2. Adabegia (b)
3. Zuhaitz eskubia
1. Zuhaitz ezkerra (null)
b e 2. Adabegia (g)
3. Zuhaitz eskubia (null)
2. Adabegia (a)
f g i j 3. Zuhaitz eskubia
1. Zuhaitz ezkerra
1. Zuhaitz ezkerra (null)
2. Adabegia (i)
k 3. Zuhaitz eskubia (null)
2. Adabegia (e)
3. Zuhaitz eskubia
1. Zuhaitz ezkerra (null)
2. Adabegia (j)
Adabegiak prozesatzen diren ordena : 3. Zuhaitz eskubia (null)
1.Zuhaitz ezkerra (null)
f,b,g,a,i,e,j,k 2. Adabegia (null)48
(k)
3. Zuhaitz eskubia (null)
Zuhaitzen errepresentazioa
Datuen sailkapena
PROZESU GARESTIA
(Eraginkortasun eskasa)
49
bilaketa-zuhaitz bitarrak
3 56
2 17 31 81
13 20 63 92
6 16
4
• bilaketa-zuhaitz bitarrak:
2 6 – zuhaitz bitar bat da, adabegi bakoitzean
hurrengo propietateekin:
1
• balio txikiagoa duten elementu guztiak,
3 5 7
adabegi horren azpizuhaitz ezkerrean daude
4
• balio handiagoa duten elementu guztiak,
2 6 adabegi horren azpizuhaitz eskubian daude
• Ez dira onartzen elementu errepikatuak
1 3 5 7
2
9
1 5
3 6
55
bilaketa-zuhaitz bitarrak
Oinarrizko eragiketak: handienaren bilaketa.
2
9
1 5
8 20
3 6
57
bilaketa-zuhaitz bitarrak
Oinarrizko eragiketak: Txertaketa
2
9
1 5
3 6
61
bilaketa-zuhaitz bitarrak
Oinarrizko eragiketak: Ezabaketa
2
Zuhaitz degeneratua O(N)
5
12
8 16
8 16
4 10 14
4 10 14
2 6
2 6
AVL zuhaitza Ez da AVL zuhaitza
1
Adabegi desorekatuak 65
AVL zuhaitzak
4 posibilitate daude oreka hausteko txerkaketan:
12 6
AVL zuhaitzak
8 16 2 10
4 10 14 4 8 14
2 6 12 16
8 16 8 16 2 10 2 10
4 10 14 4 10 14 4 8 14 4 8 14
2 6 2 6 12 16 12 16
1 17
5 13
66
kasu 1 kasu 2 kasu 3 kasu 4
bilaketa-zuhaitz bitarrak
Oinarrizko eragiketen konplexutasuna:
2
2 9
5
1 5 8 10
3 67
Zuhaitz orekatua O(log N) Zuhaitz degeneratua O(N)
bilaketa-zuhaitz bitarrak
Oinarrizko eragiketen konplexutasuna:
68
Ondorioak
bilaketa-zuhaitz bitarrak
69