SlideShare a Scribd company logo
1 of 19
Download to read offline
BST zuhaitzak
           ´
    Aitor Gomez-Goiri
 aitor.gomez@deusto.es

    Deustuko Unibertsitatea
     Ingeniaritza fakultatea
    http://www.deusto.es


        2012/04/24
Aurkezpena


  1   Zuhaitzak informatikan


  2   BST zuhaitzen inplementazioa


  3   Comparable


  4   BST klaseko metodoak


  5   Ibilbideak
Aurkezpena


  1   Zuhaitzak informatikan

  2   BST zuhaitzen inplementazioa

  3   Comparable

  4   BST klaseko metodoak

  5   Ibilbideak
Zuhaitzak informatikan




     Egitura mota bat da.
     Izena, noski, naturako zuhaitzetatik hartzen du,
     amankomunean honako ezaugarriak baititu:
         Adarrak == nodo batetik hurrengorako loturak
         Erroa == lehenengo nodoa
         Hostoak == loturarik gabeko nodoak
BST zuhaitzak



     Binary Search Tree (BST).
     Klasean ikusiko dugun zuhaitz mota da.
     Ezaugarriak:
         Elementuak ordenean gordetzen ditu (txikienetik
         handienera)
         Nodo bakoitza bi nodoetara lotuta dago:
             Ezkerraldea: elementu txikiago bat duen nodo batekin.
             Eskuinaldea: elementu handiago bat duen nodo batekin.
Zertarako behar ditugu?


     Askotan elementuak gako baten arabera gorde/bilatu
     behar dira:
         NaN-a
         Eskaera baten erreferentzia zenbakia
         Produktu baten barra-kodea

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


  1   Zuhaitzak informatikan

  2   BST zuhaitzen inplementazioa

  3   Comparable

  4   BST klaseko metodoak

  5   Ibilbideak
BST inplementazioa


     Nodo bakoitzak honako elementuak ditu:
         Beste elementuekin alderatu ahal dugun elementua
         Ezkerraldeko nodoa: elementu txikiagoa duena
         Eskuinaldeko nodoa: elementu handiagoa duena


  public class NodoA{
    private Comparable elementua;
    private NodoA ezkerraldekoa;
    private NodoA eskuinaldekoa;
    ...
  }
BST adibidea

  Adibidez, Integer motako elementuak gordetzen baditugu...
Aurkezpena


  1   Zuhaitzak informatikan

  2   BST zuhaitzen inplementazioa

  3   Comparable

  4   BST klaseko metodoak

  5   Ibilbideak
Zer da Comparable?




     Nola alderatu ditzakegu elementuak?
         Comparable interfazea erabiliz.

     Zer da interfaze bat?
         Atributurik gabeko eta metodo abstraktuak baino ez dituen
         klase bat bezalakoa da
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 bueltatu
         this==o bada
             0 bueltatu
         this>o bada
             0 baino handiagoa den zenbakia bueltatu
Javako Comparableak

     Integer, Double, String eta hainbat klase betetzen dute
     Comparable interfazea.
         Horrexegatik era horretako objektuak sartu ahal izango
         ditugu 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
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;
       }
     }
Aurkezpena


  1   Zuhaitzak informatikan

  2   BST zuhaitzen inplementazioa

  3   Comparable

  4   BST klaseko metodoak

  5   Ibilbideak
BST klaseko metodoak




  public Comparable bilatu(Comparable bilatuNahiDenElem);
  public boolean sartu(Comparable sartuNahiDenElem);
  public Comparable ezabatu(Comparable obj);
Aurkezpena


  1   Zuhaitzak informatikan

  2   BST zuhaitzen inplementazioa

  3   Comparable

  4   BST klaseko metodoak

  5   Ibilbideak
Ibilbideak



      Zuhaitzeko elementuekin zeozer egiteko, nodoz nodo ibili
      behar dugu.
          Elementu bat gakoa ez den irizpide baten arabera
          bilatzerakoan.
          Elementu guztiekin zeozer egiterakoan (adibidez, atributu
          bat aldatzeko).

      Hori egiteko era desberdinak daude:
          Pre-order
          In-order
          Post-order
Lizentzia


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




         * Ian Britton.

More Related Content

More from Open University, KMi

Konposizioa, herentzia eta polimorfismoa
Konposizioa, herentzia eta  polimorfismoa Konposizioa, herentzia eta  polimorfismoa
Konposizioa, herentzia eta polimorfismoa Open University, KMi
 
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011Open University, KMi
 
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of ThingsA Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of ThingsOpen University, KMi
 

More from Open University, KMi (8)

Egitura linealak
Egitura linealakEgitura linealak
Egitura linealak
 
Konposizioa, herentzia eta polimorfismoa
Konposizioa, herentzia eta  polimorfismoa Konposizioa, herentzia eta  polimorfismoa
Konposizioa, herentzia eta polimorfismoa
 
Fitxategiak
FitxategiakFitxategiak
Fitxategiak
 
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
 
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of ThingsA Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
 
Presentacion Defensa
Presentacion DefensaPresentacion Defensa
Presentacion Defensa
 
Introducción a PHP5
Introducción a PHP5Introducción a PHP5
Introducción a PHP5
 
Introducción a PHP5
Introducción a PHP5Introducción a PHP5
Introducción a PHP5
 

Zuhaitzak

  • 1. BST zuhaitzak ´ Aitor Gomez-Goiri aitor.gomez@deusto.es Deustuko Unibertsitatea Ingeniaritza fakultatea http://www.deusto.es 2012/04/24
  • 2. Aurkezpena 1 Zuhaitzak informatikan 2 BST zuhaitzen inplementazioa 3 Comparable 4 BST klaseko metodoak 5 Ibilbideak
  • 3. Aurkezpena 1 Zuhaitzak informatikan 2 BST zuhaitzen inplementazioa 3 Comparable 4 BST klaseko metodoak 5 Ibilbideak
  • 4. Zuhaitzak informatikan Egitura mota bat da. Izena, noski, naturako zuhaitzetatik hartzen du, amankomunean honako ezaugarriak baititu: Adarrak == nodo batetik hurrengorako loturak Erroa == lehenengo nodoa Hostoak == loturarik gabeko nodoak
  • 5. BST zuhaitzak Binary Search Tree (BST). Klasean ikusiko dugun zuhaitz mota da. Ezaugarriak: Elementuak ordenean gordetzen ditu (txikienetik handienera) Nodo bakoitza bi nodoetara lotuta dago: Ezkerraldea: elementu txikiago bat duen nodo batekin. Eskuinaldea: elementu handiago bat duen nodo batekin.
  • 6. Zertarako behar ditugu? Askotan elementuak gako baten arabera gorde/bilatu behar dira: NaN-a Eskaera baten erreferentzia zenbakia Produktu baten barra-kodea Laburbilduz, honetarako behar ditugu zuhaitzak: Datuak gordetzeko beste egitura bat da (zerrendak bezala) Berezitasuna: datuak irizpide baten arabera ordenatzen dira Irizpide horren arabera berreskuratzerakoan, zerrenda bat baino arinago bueltatzen ditu
  • 7. Aurkezpena 1 Zuhaitzak informatikan 2 BST zuhaitzen inplementazioa 3 Comparable 4 BST klaseko metodoak 5 Ibilbideak
  • 8. BST inplementazioa Nodo bakoitzak honako elementuak ditu: Beste elementuekin alderatu ahal dugun elementua Ezkerraldeko nodoa: elementu txikiagoa duena Eskuinaldeko nodoa: elementu handiagoa duena public class NodoA{ private Comparable elementua; private NodoA ezkerraldekoa; private NodoA eskuinaldekoa; ... }
  • 9. BST adibidea Adibidez, Integer motako elementuak gordetzen baditugu...
  • 10. Aurkezpena 1 Zuhaitzak informatikan 2 BST zuhaitzen inplementazioa 3 Comparable 4 BST klaseko metodoak 5 Ibilbideak
  • 11. Zer da Comparable? Nola alderatu ditzakegu elementuak? Comparable interfazea erabiliz. Zer da interfaze bat? Atributurik gabeko eta metodo abstraktuak baino ez dituen klase bat bezalakoa da
  • 12. 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 bueltatu this==o bada 0 bueltatu this>o bada 0 baino handiagoa den zenbakia bueltatu
  • 13. Javako Comparableak Integer, Double, String eta hainbat klase betetzen dute Comparable interfazea. Horrexegatik era horretako objektuak sartu ahal izango ditugu 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
  • 14. 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; } }
  • 15. Aurkezpena 1 Zuhaitzak informatikan 2 BST zuhaitzen inplementazioa 3 Comparable 4 BST klaseko metodoak 5 Ibilbideak
  • 16. BST klaseko metodoak public Comparable bilatu(Comparable bilatuNahiDenElem); public boolean sartu(Comparable sartuNahiDenElem); public Comparable ezabatu(Comparable obj);
  • 17. Aurkezpena 1 Zuhaitzak informatikan 2 BST zuhaitzen inplementazioa 3 Comparable 4 BST klaseko metodoak 5 Ibilbideak
  • 18. Ibilbideak Zuhaitzeko elementuekin zeozer egiteko, nodoz nodo ibili behar dugu. Elementu bat gakoa ez den irizpide baten arabera bilatzerakoan. Elementu guztiekin zeozer egiterakoan (adibidez, atributu bat aldatzeko). Hori egiteko era desberdinak daude: Pre-order In-order Post-order
  • 19. Lizentzia Irudien guztien jabetza intelektuala bere egileena* da, gainontzeko edukiak Creative Commons by-sa 3.0 lizentziapean daude. * Ian Britton.