Løsningsforslag - oppgaver i Avsnitt 5.2.2


Oppgave 1

Oppgave 2

Oppgave 2a)                             Oppgave 2b)

Oppgave 2c)                             Oppgave 2d)

Oppgave 2e)
Oppgave 2f)

Oppgave 3

Det venstre treet i Figur 5.2.1 a):

    Character[] bokstaver =
      {'I','E','O','A','G','M','C','F','H','K','N','B','D','J','L'};

    SBinTre<Character> tre = SBinTre.sbintre(Stream.of(bokstaver));

    System.out.println("Antall: " + tre.antall());
    System.out.println("Høyde: " + tre.høyde());
    System.out.println(tre);

Det høyre treet i Figur 5.2.1 a):

    Integer[] a = {8,2,10,1,6,9,14,4,7,12,15,3,5,11,13};
    SBinTre<Integer> tre = SBinTre.sbintre(Stream.of(a));

    System.out.println("Antall: " + tre.antall());
    System.out.println("Høyde: " + tre.høyde());
    System.out.println(tre);

Oppgave 4

  Character[] c = {'H','J','C','F','D','M','A','I','E','K','G','L','B'};
  SBinTre<Character> treA = SBinTre.sbintre(Stream.of(c));
  System.out.println(treA);

  Character[] d = {'E','H','B','E','G','F','D','I','H','A','E','C'};
  SBinTre<Character> treB = SBinTre.sbintre(Stream.of(d));
  System.out.println(treB);

  Integer[] a = {4, 1, 8, 5, 3, 10, 7, 2, 6, 9};
  SBinTre<Integer> treC = SBinTre.sbintre(Stream.of(a));
  System.out.println(treC);

  Integer[] b = {9, 4, 17, 12, 15, 1, 8, 10, 2, 5, 4, 20, 11, 6, 16, 9};
  SBinTre<Integer> treD = SBinTre.sbintre(Stream.of(b));
  System.out.println(treD);

  String[] s = {"Sohil","Per","Thanh","Fatima","Kari","Jasmin"};
  SBinTre<String> treE = SBinTre.sbintre(Stream.of(s));
  System.out.println(treE);

  Integer[] x = {10, 5, 20, 10, 3, 8, 13, 18, 7, 5, 6, 12, 4, 9, 11, 10, 22};
  SBinTre<Integer> treF = SBinTre.sbintre(Stream.of(x));
  System.out.println(treF);

Oppgave 6

  int n = 100000;
  int[] a = Tabell.randPerm(n);

  SBinTre<Integer> tre = SBinTre.sbintre();
  for (int k : a) tre.leggInn(k);

  double log2 = Math.log(n)/Math.log(2);
  int høyde = tre.høyde();
  System.out.printf("%4d  %4.2f\n",høyde,høyde/log2);

Oppgave 7

  public String toString()
  {
    StringJoiner s = new StringJoiner(", ", "[", "]");
    toString(rot, s);
    return s.toString();
  }

  private static <T> void toString(Node<T> p, StringJoiner s)
  {
    if (p.venstre != null) toString(p.venstre, s);
    s.add(p.verdi.toString());
    if (p.høyre != null) toString(p.høyre, s);
  }