• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Binärbaum (Stammbaum)

L

LegendaryBeazt

Mitglied
Uns wurde folgender Code gegeben:

Code:
public class BinaryTree<ContentType> {



  /* --------- Anfang der privaten inneren Klasse -------------- */



 

  private class BTNode<CT> {

   

    private CT content;

    private BinaryTree<CT> left, right;



    public BTNode(CT pContent) {

      // Der Knoten hat einen linken und einen rechten Teilbaum, die

      // beide von null verschieden sind. Also hat ein Blatt immer zwei

      // leere Teilbaeume unter sich.

      this.content = pContent;

      left = new BinaryTree<CT>();

      right = new BinaryTree<CT>();

    }

   

  }



  /* ----------- Ende der privaten inneren Klasse -------------- */



  private BTNode<ContentType> node;



 

  public BinaryTree() {

    this.node = null;

  }





  public BinaryTree(ContentType pContent) {

    if (pContent != null) {

      this.node = new BTNode<ContentType>(pContent);

    } else {

      this.node = null;

    }

  }





  public BinaryTree(ContentType pContent, BinaryTree<ContentType> pLeftTree, BinaryTree<ContentType> pRightTree) {

    if (pContent != null) {

      this.node = new BTNode<ContentType>(pContent);

      if (pLeftTree != null) {

        this.node.left = pLeftTree;

      } else {

        this.node.left = new BinaryTree<ContentType>();

      }

      if (pRightTree != null) {

        this.node.right = pRightTree;

      } else {

        this.node.right = new BinaryTree<ContentType>();

      }

    } else {

     // Da der Inhalt null ist, wird ein leerer BinarySearchTree erzeugt.

      this.node = null;

    }

  }



 

  public boolean isEmpty() {

    return this.node == null;

  }





  public void setContent(ContentType pContent) {

    if (pContent != null) {

      if (this.isEmpty()) {

        node = new BTNode<ContentType>(pContent);

        this.node.left = new BinaryTree<ContentType>();

        this.node.right = new BinaryTree<ContentType>();

      }

      this.node.content = pContent;

    }

  }



 

  public ContentType getContent() {

    if (this.isEmpty()) {

      return null;

    } else {

      return this.node.content;

    }

  }





  public void setLeftTree(BinaryTree<ContentType> pTree) {

    if (!this.isEmpty() && pTree != null) {

      this.node.left = pTree;

    }

  }



 

  public void setRightTree(BinaryTree<ContentType> pTree) {

    if (!this.isEmpty() && pTree != null) {

      this.node.right = pTree;

    }

  }





  public BinaryTree<ContentType> getLeftTree() {

    if (!this.isEmpty()) {

      return this.node.left;

    } else {

      return null;

    }

  }



 

  public BinaryTree<ContentType> getRightTree() {

    if (!this.isEmpty()) {

      return this.node.right;

    } else {

      return null;

    }

  }



}

Wir müssen einen Stammbaum von Lisa Simpson erstellen. Die männlichen Vorfahren sollen links, die weiblichen rechts auf den BinärBaum. Einen Konstruktor Simpson mit String Name; habe ich bereits erstellt.

Ich weiß jedoch nicht, wie ich weitermachen sollte...



Hoffe jemand hier kann mir helfen!
 
B

Baelact

Mitglied
Hallo,
Falls ich das Problem gut verstanden habe...
Lisa Simpsons Eltern sind Homer (Vater) und Marge (Mutter).
Homers Eltern sind Abraham (Vater) und Mona (Mutter).
Marges Eltern sind Clancy (Vater) und Jackie (Mutter).

Also der Stammbaum (abgezeichnet) soll so aussehen:
Code:
                                 Stamm=Lisa
             Homer                                           Marge
Abraham        Mona                   Clancy               Jackie
Abraham, Mona, Clancy und Jackie sind Blätter, also Bäumen, die keine Teilbäumen haben. Du könntest vielleicht mit der Erstellung von diesen Elementen anfangen.
Z.B.:
Code:
BinaryTree<String> abraham = new BinaryTree<String>("Abraham");
usw.
Um Homer zu machen, solltest du:
1) Homer als leere Baum zu erstellen
2) dann Abraham nach links und Mona nach rechts zufügen:
Code:
BinaryTree<String> homer = new BinaryTree<String>("Homer");
homer.setLeftTree(abraham);
homer.setRightTree(mona);
Statt drei Kommandos herasugeben kannst du zum zweiten Konstruktor greifen. Es wird die drei Kommandos ersetzen:
Code:
BinaryTree<String> homer = new BinaryTree<String>("Homer",abraham,mona);
 
L

LegendaryBeazt

Mitglied
Vielen Dank erstmal für die Hilfe!

Dies habe ich jetzt erstellt:
Code:
public class Stammbaum {

  
   Simpson S1 = new Simpson("Simpson", "Lisa");
   Simpson S2 = new Simpson("Simpson", "Marge");      
   Simpson S3 = new Simpson("Simpson", "Homer");                  
   Simpson S4 = new Simpson("Simpson", "Abraham");                  
   Simpson S5 = new Simpson("Simpson", "Clancy");
   Simpson S6 = new Simpson("Simpson", "Mona");
   Simpson S7 = new Simpson("Simpson", "Jacky");

  
  
   public static void main(String[] args) {
       // TODO Auto-generated method stub

       BinaryTree <String> abraham = new BinaryTree <String>("Abraham", null, null);
       BinaryTree <String> mona = new BinaryTree <String>("Mona", null, null);                       //blätter
       BinaryTree <String> clancy = new BinaryTree <String>("Clancy", null, null);          
       BinaryTree <String> jacky = new BinaryTree <String>("Jacky", null, null);
      
      
   /*   BinaryTree <String> homer = new BinaryTree <String>("Homer");
       homer.setLeftTree(abraham);                                               //alt.
       homer.setRightTree(mona);
      
       BinaryTree <String> marge = new BinaryTree <String>("marge");
       homer.setLeftTree(jacky);                                               //alt.
       homer.setRightTree(clancy);       
      
       BinaryTree <String> lisa = new BinaryTree <String>("lisa");
       homer.setLeftTree(homer);                                               //alt.
       homer.setRightTree(marge);                */
      
      
       BinaryTree<String> homer = new BinaryTree<String>("homer", abraham, mona);
       BinaryTree<String> marge = new BinaryTree<String>("marge", clancy, jacky);
       BinaryTree<String> lisa = new BinaryTree<String>("lisa", homer, marge);
      
  
       if(lisa.getLeftTree() != null)
          System.out.println(lisa.getContent() + " " + lisa.getLeftTree().getContent() + " " +  lisa.getRightTree().getContent());
   }          

}

Beachte die Simpsons S1-S7 nicht.

Ich war mir nicht ganz sicher, wie ich es machen sollte. Deswegen einmal das auskommentierte (alt) und das darunter. Beide funktionieren. Mit was für einer Methode kann ich jetzt jedoch den ganzen Stammbaum ausgeben und nicht nur den linken oder rechten mit lisa.getLeftTree oder lisa.getRightTree?
Die if-Anweisung gibt nur Marge und Homer, jedoch nicht deren ELtern aus.

VG Max
 
Brehice

Brehice

Neues Mitglied
hast du zufällig den Fertigen code? Muss die genau gleiche Aufgabe machen und hab keinen Plan davon. wäre sehr cool
 
kneitzel

kneitzel

Top Contributor
hast du zufällig den Fertigen code? Muss die genau gleiche Aufgabe machen und hab keinen Plan davon. wäre sehr cool
Ich frage mich da immer, was für Vorstellungen da herrschen. Man hat die Erkenntnis, das man keinen Plan hat. Aber gewisse Lernkontrollen werden ja stattfinden. Und beim Lernen gibt es gewisse Erkenntnisse wie z.B. dass durch Praxis DInge vertieft werden.

Vermutlich ist das Kind bereits in den Brunnen gefallen, weil andere praktische Dinge bereits nicht bearbeitet wurden. Es fehlt also massive Grundlagen für diese Aufgabe. Aber durch Abschreiben und ggf. aktives betrügen (was in der Schule zu einem ungenügend und beim Studium zu einer exmatrikulation führen dürfte) wird dies nicht gelöst. Diese Problematik läßt sich nur auf zwei Wege lösen:
a) Endlich anfangen zu lernen/üben - ggf. mit Nachhilfelehrer.
b) einen neuen Weg bestreiten, weil der bisherige nicht in Frage kommt.

Aber das ist ein Off Topic Thema - Aber sowas geht mir bei sowas regelmäßig durch den Kopf ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
T Binärbaum-Suche Implementation Java Basics - Anfänger-Themen 6
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
D Binärbaum Blätter finden und Ausgeben Java Basics - Anfänger-Themen 22
O BinärBaum einfügen Java Basics - Anfänger-Themen 13
E Erste Schritte Testklasse Binärbaum Java Basics - Anfänger-Themen 10
void19 Methoden Binärbaum Inorder Traversierung in Array speichern Java Basics - Anfänger-Themen 1
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
L Ganzen BinärBaum ausgeben? Java Basics - Anfänger-Themen 3
S Binärbaum in PreOrder in ArrayList speichern Java Basics - Anfänger-Themen 0
J Methoden Binärbaum, Traversierung in Array speichern Java Basics - Anfänger-Themen 18
K BinärBaum Java Basics - Anfänger-Themen 4
J Max. Anzahl von Knoten im Binärbaum Java Basics - Anfänger-Themen 3
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
C Binärbaum mit grafischer Ausgabe Java Basics - Anfänger-Themen 0
J Binärbaum formatiert ausgeben. Java Basics - Anfänger-Themen 7
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
M Binärbaum mit parent-Zeigern Java Basics - Anfänger-Themen 1
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
D Binärbaum Suche Java Basics - Anfänger-Themen 5
D Binärbaum probleme Java Basics - Anfänger-Themen 4
P Binärbaum - Primärschlüssel Java Basics - Anfänger-Themen 3
X Fehler Binärbaum Java Basics - Anfänger-Themen 6
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
P Binärbaum Ordnungsproblem Java Basics - Anfänger-Themen 8
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
M Binärbaum - Problem bei Knoten anhängen / löschen Java Basics - Anfänger-Themen 5
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
S Klassen Aufgabe: Binärbaum überprüfen Java Basics - Anfänger-Themen 16
S Binärbaum Java Basics - Anfänger-Themen 9
S Variable Parameterliste in Binärbaum Java Basics - Anfänger-Themen 2
N BinärBaum Hilfestellung Java Basics - Anfänger-Themen 8
S Binärbaum prüfen, ob sortiert oder unsortiert Java Basics - Anfänger-Themen 6
W Binärbaum zahlen addieren Java Basics - Anfänger-Themen 4
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
S Binärbaum Java Basics - Anfänger-Themen 7
I Binärbaum Java Basics - Anfänger-Themen 5
S Bitte um Hilfe beim unsortierten Binärbaum!! Java Basics - Anfänger-Themen 6
J Binärbaum getSize Java Basics - Anfänger-Themen 4
P Fragen zum Binärbaum Java Basics - Anfänger-Themen 3
S Binärbaum implementieren Java Basics - Anfänger-Themen 6
K Tiefe im Binärbaum Java Basics - Anfänger-Themen 2
G generischer binärbaum Java Basics - Anfänger-Themen 9
G Binärbaum und Wrapperklassen Java Basics - Anfänger-Themen 6
F Binärbaum codieren. Codeproblem! Java Basics - Anfänger-Themen 4
D rekursion im binärbaum Java Basics - Anfänger-Themen 11
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
T Binärbaum - noch ein "klitzekleiner Fehler" Java Basics - Anfänger-Themen 4
B Binärbaum auf Vollständigkeit prüfen Java Basics - Anfänger-Themen 15
G Frage zur einfügen in einem Binärbaum Java Basics - Anfänger-Themen 21
G Binärbaum grafisch darstellen Java Basics - Anfänger-Themen 4
K Stammbaum durchlaufen (Iteration etc) Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Anzeige

Neue Themen


Oben