zuhaitzak

19

Click here to load reader

Upload: open-university-kmi

Post on 23-Jun-2015

818 views

Category:

Technology


1 download

DESCRIPTION

Programazioa II (2012): 6. gaia

TRANSCRIPT

Page 1: Zuhaitzak

BST zuhaitzakAitor Gomez-Goiri

[email protected]

Deustuko UnibertsitateaIngeniaritza fakultateahttp://www.deusto.es

2012/04/24

Page 2: Zuhaitzak

Aurkezpena

1 Zuhaitzak informatikan

2 BST zuhaitzen inplementazioa

3 Comparable

4 BST klaseko metodoak

5 Ibilbideak

Page 3: Zuhaitzak

Aurkezpena

1 Zuhaitzak informatikan

2 BST zuhaitzen inplementazioa

3 Comparable

4 BST klaseko metodoak

5 Ibilbideak

Page 4: Zuhaitzak

Zuhaitzak informatikan

Egitura mota bat da.Izena, noski, naturako zuhaitzetatik hartzen du,amankomunean honako ezaugarriak baititu:

Adarrak == nodo batetik hurrengorako loturakErroa == lehenengo nodoaHostoak == loturarik gabeko nodoak

Page 5: Zuhaitzak

BST zuhaitzak

Binary Search Tree (BST).Klasean ikusiko dugun zuhaitz mota da.

Ezaugarriak:Elementuak ordenean gordetzen ditu (txikienetikhandienera)Nodo bakoitza bi nodoetara lotuta dago:

Ezkerraldea: elementu txikiago bat duen nodo batekin.Eskuinaldea: elementu handiago bat duen nodo batekin.

Page 6: Zuhaitzak

Zertarako behar ditugu?

Askotan elementuak gako baten arabera gorde/bilatubehar dira:

NaN-aEskaera baten erreferentzia zenbakiaProduktu baten barra-kodea

Laburbilduz, honetarako behar ditugu zuhaitzak:Datuak gordetzeko beste egitura bat da (zerrendak bezala)Berezitasuna: datuak irizpide baten arabera ordenatzendiraIrizpide horren arabera berreskuratzerakoan, zerrenda batbaino arinago bueltatzen ditu

Page 7: Zuhaitzak

Aurkezpena

1 Zuhaitzak informatikan

2 BST zuhaitzen inplementazioa

3 Comparable

4 BST klaseko metodoak

5 Ibilbideak

Page 8: Zuhaitzak

BST inplementazioa

Nodo bakoitzak honako elementuak ditu:Beste elementuekin alderatu ahal dugun elementuaEzkerraldeko nodoa: elementu txikiagoa duenaEskuinaldeko nodoa: elementu handiagoa duena

public class NodoA{

private Comparable elementua;

private NodoA ezkerraldekoa;

private NodoA eskuinaldekoa;

...

}

Page 9: Zuhaitzak

BST adibidea

Adibidez, Integer motako elementuak gordetzen baditugu...

Page 10: Zuhaitzak

Aurkezpena

1 Zuhaitzak informatikan

2 BST zuhaitzen inplementazioa

3 Comparable

4 BST klaseko metodoak

5 Ibilbideak

Page 11: Zuhaitzak

Zer da Comparable?

Nola alderatu ditzakegu elementuak?Comparable interfazea erabiliz.

Zer da interfaze bat?Atributurik gabeko eta metodo abstraktuak baino ez dituenklase bat bezalakoa da

Page 12: Zuhaitzak

Zertan datza Comparable interfazea?

Zer egin behar dugu klase bat Comparable bihurtzeko?Metodo bat gainidatzi.

int compareTo(Object o)

Zer egiten du?this<o bada

0 baino txikiagoa den zenbakia bueltatuthis==o bada

0 bueltatuthis>o bada

0 baino handiagoa den zenbakia bueltatu

Page 13: Zuhaitzak

Javako Comparableak

Integer, Double, String eta hainbat klase betetzen duteComparable interfazea.

Horrexegatik era horretako objektuak sartu ahal izangoditugu gure BSTan

Zenbakiekin errez ulertu ahal da:

(new Integer(1)).compareTo( new Integer(2) ) // < 0

(new Integer(1)).compareTo( new Integer(1) ) // == 0

(new Integer(4)).compareTo( new Integer(3) ) // > 0

String klaseak alfabetikoki ordenatzen ditu hitzak

"bizkaia".compareTo("bizkaia") // == 0

"araba".compareTo("bizkaia") // < 0

"gipuzkoa".compareTo("bizkaia") // >0

Page 14: Zuhaitzak

Comparable klase bat programatzeko

Eta gure klaseak Comparable bihurtzeko?Adibidez, ikasleak NaN-aren arabera ordenatzen badira...

public class Ikaslea implements Comparable {

private int nan;

private String izena;

...

public int compareTo(Object o) {

Ikaslea ik = (Ikaslea) o;

if( this.nan==ik.nan ) return 0;

if( this.nan<ik.nan ) return -1;

// if( this.nan>ik.nan )

return 1;

}

}

Page 15: Zuhaitzak

Aurkezpena

1 Zuhaitzak informatikan

2 BST zuhaitzen inplementazioa

3 Comparable

4 BST klaseko metodoak

5 Ibilbideak

Page 16: Zuhaitzak

BST klaseko metodoak

public Comparable bilatu(Comparable bilatuNahiDenElem);

public boolean sartu(Comparable sartuNahiDenElem);

public Comparable ezabatu(Comparable obj);

Page 17: Zuhaitzak

Aurkezpena

1 Zuhaitzak informatikan

2 BST zuhaitzen inplementazioa

3 Comparable

4 BST klaseko metodoak

5 Ibilbideak

Page 18: Zuhaitzak

Ibilbideak

Zuhaitzeko elementuekin zeozer egiteko, nodoz nodo ibilibehar dugu.

Elementu bat gakoa ez den irizpide baten araberabilatzerakoan.Elementu guztiekin zeozer egiterakoan (adibidez, atributubat aldatzeko).

Hori egiteko era desberdinak daude:Pre-orderIn-orderPost-order

Page 19: Zuhaitzak

Lizentzia

Irudien guztien jabetza intelektuala bere egileena* da,gainontzeko edukiak Creative Commons by-sa 3.0

lizentziapean daude.

* Ian Britton.