Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Tietorakenteet / Copyright © 2001 Arto Wikla.

581325-0 Tietorakenteet, loppukoe 8.6.2001/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi.

  1. Binääripuu esittää sellaista sukupuuta, jossa juurena on "minä". Juuren alipuut ovat "äiti" ja "isä", jne. Puun määrittely alkaa seuraavasti:
       public class Sukupuu {
    
         private class Sukulainen {
           private String nimi;
           private int syntymävuosi;
           private Sukulainen äiti, isä;
         }
    
         private Sukulainen juuri;
    
         public Sukupuu() {
           juuri = null;
         }
         ...
    
    Ohjelmoi luokkaan metodi (määrittele toiminta myös virhetilanteissa)

  2. Alunperin tyhjään AVL-puuhun viedään ensin avaimet 57, 34, 39, 50, 55 ja 53. Piirrä AVL-puu näiden lisäysten jälkeen. Sitten puuhun lisätään vielä avaimet 90, 80, 70 ja 60. Piirrä AVL-puu näiden lisäysten jälkeen.

    Lopuksi puu tulkitaankin vain tavalliseksi hakupuuksi ja siitä poistetaan remove-operaatiolla avain 57. Piirrä hakupuu tämän poiston jälkeen. (Kahdesta poisto-operaation vaihtoehtoisesta toteutuksesta tässä käytetään periaatetta: "vasemman alipuun maksimi".)

    Häviääkö hakupuun AVL-ominaisuus poiston seurauksena? Jos häviää, miksi se häviää?

    Huom: Vastauksessa on siis vain kolme kuvaa!

  3. Binäärikeko on toteutettu taulukkona. Keon alkiot toteuttavat rajapintaluokan ComparableAndPrintable:
     
            public interface ComparableAndPrintable {
              public int compareTo(Object toinen);
              public String toString();
            }
       
    Täsmennä keon talletustapa ja ohjelmoi ilmentymämetodi, joka tulostaa keon alkiot esijärjestyksessä.