Løsningsforslag - oppgaver i Avsnitt 11.2.7


Oppgave 1

Oppgave 2

Oppgave 3

  public int maksHøyde()
  {
    if (noder.size() == 0) return -1;  // ingen trær

    int maks = 0;

    for (T e : noder.keySet())
    {
      int høyde = 0;
      Node p = noder.get(e);
      while (p.forelder != null)
      {
        høyde++;
        p = p.forelder;
      }
      if (høyde > maks) maks = høyde;
    }

    return maks;
  }

Oppgave 4

  UnionFinn<Character> m = new UnionFinn<>();

  m.union('A','B'); m.union('C','D'); m.union('E','F'); m.union('G','H');

  m.union('A','C'); m.union('E','G');

  m.union('A','E');

  System.out.println(m.maksHøyde());  // høyden er 3
  System.out.println(m.mengde('A'));  // {A, B, C, D, E, F, G, H}
  System.out.println(m.maksHøyde());  // høyden har nå blitt 1
  System.out.println(m.mengde('A'));  // {A, B, C, D, E, F, G, H}

Årsaken til at treets høyde har blitt redusert til 1 etter kallet på metoden mengde() er at i den kalles metoden finnRot() fortløpende og dermed blir nodene «flytte opp».