Binärer Suchbaum

> ****}
ist komische Syntax, kein Java

allgemein poste doch einfach die genaue Fehlermeldung die dann kommt und vielleicht auch die komplette Klasse
so dass man genau sehen kann, wo du eingefügt hast,
so dass man sie schnell testweise kopieren kann usw.
 
In Zeile 40 sind paar geschweifte Klammer zu viel, und es fehlt eine Klammer nach der add-Methode...
Zumindestmal auf den ersten Blick...
 
Hier sind alle BTSNode rot unterstrichen und die Fehlermeldung lautet:
Multiple marker at this line.
BTSNode cannot be resolved to a type.

Deine Klasse heißt ja auch BSTNode und nicht BTS... ?! Aber Allgemein sind da so einige komische Sachen ..(t.righ=tadd(x,t.right); } --> tadd?? ) Und damit das compareTo funzt müsstest du oben add(E x, BSTNode<E> t) schreiben. Dann fehlt ja auch irgendwie noch der Rückgabewert...und den Konsturktor new BTSNode(x); kann ich auf die Schnelle auch nicht finden.
Zu der Fehlermeldung bei add, schau mal wie die Methode heißt aus der du die add Methode aufrufen willst 🙂
Irgendwie ein ziemliches Durcheinander da...
 
Ich schreib alles von Anfang an auf. Gestern war ich ein wenig verwirrt. Ich weiß nicht wie ich mit dem <E> in Java umgehen soll. Ich habe im Programm geschrieben, wo die Fehler sind. Bitte um Hilfe.

Java:
public class BinarySearchTree<E extends Comparable<E>> {

   protected class BSTNode<E extends Comparable<E>> {

      protected E value = null;
      protected BSTNode<E> left  = null;
      protected BSTNode<E> right = null;

      protected BSTNode(E v, BSTNode<E> l, BSTNode<E> r) {
         value = v;
         left  = l;
         right = r;
      }

      protected BSTNode add(E node, BSTNode<E> t) {
          if(node == null){
              node = new BSTNode(t); // Fehler bei new
          }
          else {
              if(t <= node.t){
                  node.left = add(node.left, t); //alle node. Fehler
              }
              else {
                   node.right = add(node.right, t);  }
          }
          return node;
      }

   protected BSTNode<E> root = null;

   public void add(int value) {
       root = add(root, value); } //Fehler, muss aber zwei Werte übergeben
   }
}
 
Mhm..macht es Sinn so weiter zu machen? Lese dich evlt. noch einmal in Generics ein und evtl. die letzten Vorlesungen 🙂
Java:
node = new BSTNode(t); // Fehler bei new
Wie oben schon gesagt, diesen Konstruktor(mit nur einem Parameter) gibt es nicht
Und was soll das überhaupt werden? node wird ja als Paramter der Methode übergeben (und ist btw vom Typ E/Comparable nicht BSTNode, was auch die anderen Fehler erklärt!)
 
es macht immer Sinn🙂 Wie ein Binärbaum funkt weiß ich ja theoretisch. Es soll ja bei add nur ein wert eingefügt werden. Was ist der dritte WErt zum übergeben. Kenne nur die Version 2 Werte zu übergeben. Hab für den dritten Wert mal über null hingeschrieben. Immerhin habe ich jetzt verstanden was du meinst, danke! Außerdem habe ich es jetzt wie am Anfang auf compareTo umgeändert....
 
Zuletzt bearbeitet:
so hier der Code noch schöner. hab mich jetzt ins zeug gelegt und mal wirklich nachgedacht🙂

das einzige was mir jetzt noch unklar ist, welchen wert der dritte parameter haben soll. kenn den binären baum nur, dass man 2 parameter übergeben muss. bitte noch um eine kleine hilfe.

Java:
public class BinarySearchTree<E extends Comparable<E>> {

   protected class BSTNode<E extends Comparable<E>> {

      protected E value = null;
      protected BSTNode<E> left  = null;
      protected BSTNode<E> right = null;

      protected BSTNode(E v, BSTNode<E> l, BSTNode<E> r) {
         value = v;
         left  = l;
         right = r;
      }

      protected BSTNode<E> add( E x, BSTNode<E> l, BSTNode<E> r ) {
          if( l == null )
              l = new BSTNode<E>(x, l, r );
          else if( x.compareTo( l.value ) < 0 )
              l.left = add( x, l.left, null );
          else if( x.compareTo( l.value ) > 0 )
              l.right = add( x, l.right, null );
            // Duplicate
          return l;
      }
      

   protected BSTNode<E> root = null;

   public void add(E value) {
       root = add(value, root, null); } //Fehler, muss aber zwei Werte übergeben
   }
}
 

Zurück
Oben