Bäume implementieren

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo, ich muss in java Bäume implementieren und habe da ein Problem.
Bei dieser Methode hier:
Code:
public int hoehe()
 {
  if (nknoten.links==null && nknoten.rechts==null)
     return 0;
  if (nknoten.links==null)
     return 1+nknoten.rechts.hoehe();
  if (nknoten.rechts==null)
     return 1+nknoten.links.hoehe();
     
  return 1+ Math.max(nknoten.links.hoehe(),nknoten.rechts.hoehe());
gibt der Compiler immer aus das er die Methode hoehe nicht finden kann.
Den Knoten habe ich wie folgt implementiert
Code:
public class Knoten<E>
{
  Knoten<E> links;
  Knoten<E> rechts;
  E value;

  public Knoten (Knoten<E> links, Knoten<E> rechts, E
  value)
  {
  this.links=links;
  this.rechts=rechts;
  this.value=value;
  }

}

Kann mit jemand vlt. sagen warum der Compiler die Methode hoehe nicht rekursiv aufrufen kann?
 

@x.l

Bekanntes Mitglied
Ich kann in deiner Klasse die Methode hoehe() auch nicht finden...

#edit Wo befindet die sich denn bei dir im Code?
 
G

Guest

Gast
Achso ich habe vergessen zu erwähnen das ich hoehe in einem Interface definiert habe, welches ich nun implementiert habe.
Das was ich gepostet habe ist doch die Methode hoehe die sich rekursiv aufrufen soll, oder sehe ich das falsch?

Mein Interface sieht wie folgt aus:

Code:
import java.util.*;

public interface Baum<E>
{
  // Anzahl der Knoten :
  public int groesse ();
  // Hoehe
  public int hoehe ();
  // Wurzel
  public Knoten<E> wurzel ();
  // Inhalt des Knoten v :
  public E Inhalt (Knoten<E> v);
  // Vater des Knoten v .
  public Knoten<E> vater (Knoten<E> v ) throws WurzelException;
  // Kinder des Knoten v :
  public List<Knoten<E>> kinder (Knoten<E> v ) ;
  // gib Knoten v ein weiteres Kind mit Inhalt e
  public Knoten<E> weiteresKind (Knoten<E> v , E e );
  // Preorder-Liste der gespeicherten Elemente
  public List<E> preorder ();
}
 

ARadauer

Top Contributor
wer implementiert das interface, ich blick auch nicht durch. vielleicht postes du mal alle klassen. wir haben ja platz :D
 
G

Guest

Gast
Ok :)
Also Ich habe eine Interface Baum , eine Klasse Knoten und eine Klasse Tree welches das Interface Baum implementiert:

Code:
import java.util.List;

public class Tree<E> implements Baum<E>
{
 public Knoten nknoten;
 public int groesse = 0;



 public int hoehe()
 {
  if (nknoten.links==null && nknoten.rechts==null)
     return 0;
  if (nknoten.links==null)
     return 1+nknoten.rechts.hoehe();
  if (nknoten.rechts==null)
     return 1+nknoten.links.hoehe();
     
  return 1+ Math.max(nknoten.links.hoehe(),nknoten.rechts.hoehe());
 }
 
 public int groesse()
 {
  if (nknoten.links==null && nknoten.rechts==null)
     return 1;
  if (nknoten.links==null)
     return 1+nknoten.rechts.groesse();
  if (nknoten.rechts==null)
     return 1+nknoten.links.hoehe();
     
  return 1+ links.hoehe()+rechts.hoehe();
 }
 
 public Knoten<E> wurzel ()
 {
   if (nknoten.links==null && nknoten.rechts==null)
      return nknoten;
   else
   {

   }

 }
 public E Inhalt (Knoten<E> v)
 {

 }
 public Knoten<E> vater (Knoten<E> v )
 {

 }
 public List<Knoten<E>> kinder (Knoten<E> v )
 {

 }
 public Knoten<E> weiteresKind (Knoten<E> v , E e )
 {

 }
 public List<E> preorder ()
 {

 }
}

Vielleicht mach ich gerade auch irgend nen Dummen fehler, aber ich komm einfach nicht drauf warum er diese Methode nicht finen kann.
 

@x.l

Bekanntes Mitglied
Er kann hoehe() nicht finden, da diese Methode ja gar nicht in der Klasse Knoten vorhanden ist. Ist ja auch eigentlich logisch, ein Knoten weiß doch nichts über die Höhe des Baumes.

Überdenke nochmal genau die Methode hoehe(), sie ist meiner Ansicht nach falsch implementiert. Die Höhe ist doch nichts anderes als der längste Pfad, oder?
 
G

Guest

Gast
Stimmt hät ich ja auch eigentlich selber drauf kommen können :)
Eigentlich müsste aber diese Methode funktionieren, ich werds mal testen und dann werde ich ja sehen obs klappt.
Vielen Dank nochmals für die Hilfe.
 

lukian

Mitglied
Hi,
Ist ja auch eigentlich logisch, ein Knoten weiß doch nichts über die Höhe des Baumes.

das ist zwar richtig, allerdings ist die Idee, die seiner hoehe()-Funktion zugrunde liegt eine andere. Denn jeder Knoten in einem Baum ist wiederum Wurzel eines (Teil-)Baums, in dem all die Knoten enthalten sind, die 'unterhalb' des Knotens liegen. Somit kann man die Hoehe eines Baums rekursiv errechnen.
Will man also die Höhe eines Baumes wissen, nimmt man sich den Wurzelknoten her. Da es sich in diesem Fall offensichtlich um einen Binärbaum handelt fragt dieser zuerst seinen linken Knoten, wie die Höhe seines Teilbaums ist und dann den rechten Knoten und addiert zum Schluss sich selbst hinzu. Wenn man das rekursiv macht (so wie in dem Code-Beispiel) erhält man die Höhe des gesamten Baums.

Fazit: die hoehe()-Funktion gehört nicht in die Tree-Klasse sondern in die Knoten-Klasse.


P.S.: die groesse()-Funktion übrigens auch.

Gruß,
lukian
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Bäume Java Basics - Anfänger-Themen 13
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
G Rot-Schwarz-Bäume Java Java Basics - Anfänger-Themen 10
M Rot Schwarz Bäume, ausführen? Java Basics - Anfänger-Themen 6
L Binären Bäume für beliebige Datentypen Java Basics - Anfänger-Themen 15
B Theorie Rot-Schwarz-Bäume Java Basics - Anfänger-Themen 2
D Klausur Vorbereitung: Listen, Rekursion, Bäume & Vererbung Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
L 2-3-4 Bäume Konstruktor Java Basics - Anfänger-Themen 2
E Binäre Bäume Java Basics - Anfänger-Themen 7
W Bäume - containsValueRec Java Basics - Anfänger-Themen 2
R Crashkurs Listen / Bäume Java Basics - Anfänger-Themen 10
J bäume Java Basics - Anfänger-Themen 5
C Bäume in Java. Knoten in Array speichern Java Basics - Anfänger-Themen 3
C Bäume in Java. Code funktioniert nicht Java Basics - Anfänger-Themen 12
G Tertiäre Bäume Java Basics - Anfänger-Themen 2
F Bäume in Java Java Basics - Anfänger-Themen 4
F Bäume zeichnen Java Basics - Anfänger-Themen 5
D n-näre Bäume (DOM) durchsuchen Java Basics - Anfänger-Themen 4
G Frage zur Bäume ? Java Basics - Anfänger-Themen 3
L [Aufgabe] Huffman Bäume Java Basics - Anfänger-Themen 10
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
districon Generics implementieren Java Basics - Anfänger-Themen 2
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
R Taxistand Implementieren Java Basics - Anfänger-Themen 1
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
T Methode implementieren Java Basics - Anfänger-Themen 21
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B UML-Klassendiagram get und set implementieren Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
E Klassen implementieren Java Basics - Anfänger-Themen 94
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
M WindowStateListener selbst implementieren Java Basics - Anfänger-Themen 8
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
N Stacks und Queues Implementieren Java Basics - Anfänger-Themen 2
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
X Polynome implementieren Java Basics - Anfänger-Themen 3
O Methoden implementieren, Sichtbarkeiten, Brüche Java Basics - Anfänger-Themen 104
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18
B Formel in Java implementieren Java Basics - Anfänger-Themen 4
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
C Zyklisch verkette Liste - Pop() methode implementieren Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
K Klassen implementieren Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
C UML Diagramm in Java implementieren-Korrektur Java Basics - Anfänger-Themen 8
T Equal Methode implementieren Java Basics - Anfänger-Themen 22
C ZahlenMuster implementieren Java Basics - Anfänger-Themen 1
C Alte Klausuraufgabe - UML in Java implementieren Java Basics - Anfänger-Themen 1
D Erste Schritte spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 1
D spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 5
J Builder Pattern implementieren Java Basics - Anfänger-Themen 3
B Sortierte Liste implementieren Java Basics - Anfänger-Themen 3
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
D Weihnachtsbaum implementieren gescheitert. Java Basics - Anfänger-Themen 2
D Tannenbaum implementieren gescheitert Java Basics - Anfänger-Themen 1
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
G Erbklasse verpflichten Methode zu implementieren Java Basics - Anfänger-Themen 3
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
G einfache Leet-Übersetzung implementieren und benutzen Java Basics - Anfänger-Themen 14
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
D Exception selbst Implementieren Java Basics - Anfänger-Themen 1
T QuickSort implementieren Java Basics - Anfänger-Themen 5
J Konstruktor implementieren, zahl 0 repräsentieren Java Basics - Anfänger-Themen 4
C Frage zum Kartenspiel implementieren Java Basics - Anfänger-Themen 9
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
T Ampel implementieren Java Basics - Anfänger-Themen 12
S Interface Implementieren von Methoden aus einer Klasse in eine GUI Java Basics - Anfänger-Themen 6
H Methoden Implementieren "Drücken Sie eine beliebige Taste" Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben