Binärbaum (Stammbaum)

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!
 

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);
 
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

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

kneitzel

Gast
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 ...
 

Loay Diyab

Neues Mitglied
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 ...
Hatten halt beim Herrn Simon. Da ist es doch offensichtlich, dass wir über keinerlei Grundlagen verfügen. Dann muss man halt Maßnahmen ergreifen und irgendwo anders die Aufgaben suchen du Bauer
 
K

kneitzel

Gast
Hatten halt beim Herrn Simon. Da ist es doch offensichtlich, dass wir über keinerlei Grundlagen verfügen. Dann muss man halt Maßnahmen ergreifen und irgendwo anders die Aufgaben suchen du Bauer
Also der Thread ist fast 1 Jahr alt und Du hast jetzt extra einen Account erstellt, weil Du mir irgendwas mitteilen willst?

Das Thema war vor allem, dass ich der meinung bin, dass man sich nicht einfach nur fertige Lösungen beschafft bei Dingen, die man nicht versteht sondern dass man sich fehlendes Wissen aneignet. Wobei das natürlich bestimmt ganz falsche Vorstellungen sind, denn (Hoch-)Schule hat bestimmt nichts mit lernen zu tun ... und wenn ein Lehrer/Dozent/Professor es nicht schafft, einem so Dinge zu erklären, dann ist man total aufgeschmissen. Und immer diese Geheimbünde, die Wissen einfach nicht weiter geben! Da hat man ja gar keine Chance, die Grundlagen sich selbst zu erarbeiten ...

Also da wird es wirklich Zeit, dass mal jemand diese großen Geheimnisse offenbart und z.B. mal ein Buch über dieses Thema schreiben würde ... So ein Buch könnte z.B. "Java von Kopf bis Fuss" oder "Schrödinger programmiert Java" nennen. Evtl. ist sogar jemand so nett, un veröffentlich sein Buch frei im Internet. Falls da jemand auf so eine Idee kommen sollte: "Java ist auch eine Insel" könnte da ein Cooler Name sein.

Aber da ja auch junger Leute immer mehr Probleme haben, schriftliche Dinge zu verstehen: Da könnte es genial sein, wenn man Videos machen würde. Wäre doch toll, wenn man auf YouTube nach Java suchen könnte und dann da wenigstens ein paar Treffer hätte.

Aber bis sowas kommt wird bestimmt noch viel Zeit vergehen ... und bis dahin wirst Du wohl Recht haben: Wenn man an jemanden gerät, der es einfach nicht gut genug erklärt, dann ist man einfach aufgeschmissen.... Und dann kommt so ein Bauer wie ich daher und macht euch arme Leute auch noch dumm an. Und nicht nur das - diese blöde Idee, dass man in Schule / Hochschule etwas lernen soll ... (Hoch-)Schulzeit ist ja nur dazu da zu kiffen. Daher wird da ja auch jetzt auch bestimmt legalisiert ...
 

Loay Diyab

Neues Mitglied
Also der Thread ist fast 1 Jahr alt und Du hast jetzt extra einen Account erstellt, weil Du mir irgendwas mitteilen willst?

Das Thema war vor allem, dass ich der meinung bin, dass man sich nicht einfach nur fertige Lösungen beschafft bei Dingen, die man nicht versteht sondern dass man sich fehlendes Wissen aneignet. Wobei das natürlich bestimmt ganz falsche Vorstellungen sind, denn (Hoch-)Schule hat bestimmt nichts mit lernen zu tun ... und wenn ein Lehrer/Dozent/Professor es nicht schafft, einem so Dinge zu erklären, dann ist man total aufgeschmissen. Und immer diese Geheimbünde, die Wissen einfach nicht weiter geben! Da hat man ja gar keine Chance, die Grundlagen sich selbst zu erarbeiten ...

Also da wird es wirklich Zeit, dass mal jemand diese großen Geheimnisse offenbart und z.B. mal ein Buch über dieses Thema schreiben würde ... So ein Buch könnte z.B. "Java von Kopf bis Fuss" oder "Schrödinger programmiert Java" nennen. Evtl. ist sogar jemand so nett, un veröffentlich sein Buch frei im Internet. Falls da jemand auf so eine Idee kommen sollte: "Java ist auch eine Insel" könnte da ein Cooler Name sein.

Aber da ja auch junger Leute immer mehr Probleme haben, schriftliche Dinge zu verstehen: Da könnte es genial sein, wenn man Videos machen würde. Wäre doch toll, wenn man auf YouTube nach Java suchen könnte und dann da wenigstens ein paar Treffer hätte.

Aber bis sowas kommt wird bestimmt noch viel Zeit vergehen ... und bis dahin wirst Du wohl Recht haben: Wenn man an jemanden gerät, der es einfach nicht gut genug erklärt, dann ist man einfach aufgeschmissen.... Und dann kommt so ein Bauer wie ich daher und macht euch arme Leute auch noch dumm an. Und nicht nur das - diese blöde Idee, dass man in Schule / Hochschule etwas lernen soll ... (Hoch-)Schulzeit ist ja nur dazu da zu kiffen. Daher wird da ja auch jetzt auch bestimmt legalisiert ...
Danke für Ihre Antwort trotz der Älte dieses Threads. Finde das auch ganz knifflig die Situation hier. :)
 
Ä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 7
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

Neue Themen


Oben