Baum

Status
Nicht offen für weitere Antworten.

HBOX

Mitglied
Hallo zusamen,

das ist mein erster Beitrag in einem Deutschen Java Forum. Ich komme aus Portugal und studiere an einer Uni. Deutsch habe ich in der Schule gelernt, also verzeiht meine Rechtschreibfehler.

Ich muss ein Program in Java schreiben das folgendes macht:

1º es wird eine zahlenkette gelesen, und dann muss daraus ein Baum entstehen.

2º Alle Blätter und Knoten die vertikal übereinander stehen müssen addiert werden!

Siehe Bild: z.B. (4+11=15) (10+7=17) (6+9=15)

Ich habe zur Hilfe ein Bild bereit stehen!

Baum1.JPG
Freue mich über jeden Tip und bedanke mich schon mal im Vorraus

mfg
 

Landei

Top Contributor
Willkommen im Forum!

Wie soll das Einlesen genau stattfinden? Und kann es "Überlappungen" geben (könnte z.B. die 8 ein weiteres Blatt "über" der 11 haben)?

Als Datenstruktur bietet sich natürlich (wer hätte das gedacht?) ein Baum aus Knoten an:
Java:
public class Node {
   private int value;
   private Node left = null;
   private Node right = null;
   public Node(int value, Node left, Node right) {
      this.value = value; 
      this.left = left;
      this.right = right; 
   }
   public int getValue() { return value; }
   public Node getLeft() { return left; }
   public Node getRight() { return right; }

   public List<Node> childrenOnVerticalPosition() {
        List<Node> result = new ArrayList<Node>();
        if (left != null) { result.addAll(left.searchPos(-1)); } 
        if (right != null) { result.addAll(right.searchPos(1)); }
        return result;
   }
   private List<Node> searchPos(int pos) {
        List<Node> result = new ArrayList<Node>();
        if (pos == 0) { result.add(this); } 
        if (left != null) {  result.addAll(left.searchPos(pos-1));  } 
        if (right != null) {  result.addAll(right.searchPos(pos+1));  }
        return result;
   }
 
}

childrenOnVerticalPosition sollte von einem Knoten alle Kinder liefern, die sich genau "unter" ihm befinden (egal wieviel Ebenen tief).
 

Noctarius

Top Contributor
Offtopic:
Du hast Deutsch in der Schule gelernt? Oo Echt jetzt? Na dann mal willkommen im Club der Menschen, die mindenstens einen deutschen Satz fehlerfrei schreiben können. Damit bist du weit über vielen Deutschen angesiedelt :D
 

HBOX

Mitglied
Danke für die Hilfe Landei! Also es wird keine überlappungen geben. Mir ist noch nicht klar wie aus einer Zahlenkette ein Baum wird
 

Landei

Top Contributor
Der einzige Fall den ich kenne, bei der aus einer gegebenen Zahlenkette ohne weitere Angaben ein binärer Baum wird, wäre ein Baum zum Sortieren. Also, wenn man die Zahlen 10 ,3 ,4 ,7, 12, 2 "hineinwirft", kommt...
Code:
       10
      /  \
     3   12
    / \
   2   4
         \
          7
...heraus.
 

Landei

Top Contributor
Java:
class Node {
   private int value;
   private Node left = null;
   private Node right = null;

   public Node(int value) {
      this.value = value; 
   }

   ...  //andere Methoden wie oben
 
   public void insert(int newValue) {
      if (newValue < value) {
         if (left == null) {
            left = new Node(newValue); 
         } else {
            left.insert(newValue);
         }
      } else if (newValue > value) {
         if (right == null) {
            right = new Node(newValue); 
         } else {
            right.insert(newValue);
         }
      }       
   }
}

int[] values = new int[]{10 ,3 ,4 ,7, 12, 2};
Node root = new Node(values[0]);
for(int v : values) {
   root.insert(v);
}
 
Zuletzt bearbeitet:

MQue

Top Contributor
Der einzige Fall den ich kenne, bei der aus einer gegebenen Zahlenkette ohne weitere Angaben ein binärer Baum wird, wäre ein Baum zum Sortieren. Also, wenn man die Zahlen 10 ,3 ,4 ,7, 12, 2 "hineinwirft", kommt...
Code:
       10
      /  \
     3   12
    / \
   2   4
         \
          7
...heraus.

Mal ne blöde Frage, wenn ich die Wurzel so wähle, dass diese ganz am Rand ist (angenommen es handelt sich um das ABC) und die Wurzel ist Z, dann sind ja bei einem binären Baum alle einträge links davon, d.h. es gibt rechts von der Wurzel keine Zweige, was macht man da dagegen, damit das nicht passiert:

Wenn ich habe:

Code:
BinaerBaum bb = new BinaerBaum();
bb.insert("Z");     // wenns so anfängt, hab ich ein Problem, oder?
bb.insert("A");
bb.insert("F");

[CODE]
 

eRaaaa

Top Contributor
naja neusortieren nehme ich an :D
also halt so ordnen, dass dann F die wurzel ist. dann passts ja wieder. A linkerteilbaum, Z rechter teilbaum.
 

MQue

Top Contributor
naja neusortieren nehme ich an :D
also halt so ordnen, dass dann F die wurzel ist. dann passts ja wieder. A linkerteilbaum, Z rechter teilbaum.

Das dauert aber ziemlich, den ganzen Baum neu aufzubauen, das kann ja nicht Sinn der Übung sein, wenn ich in der falschen Reihenfolge hinzufüge, dass es dann um einiges länger dauert -> alle Knoten auslesen -> nach der Mitte suchen, Baum neu aufbauen.
lg
 

Landei

Top Contributor
Es gibt Algorithmen zum nachträglichen Ausbalancieren von Bäumen, und spezielle "Baumarten" (wie Rot-Schwarz-Bäume), die dafür sorgen, dass der Baum schon beim Einfügen immer balanciert bleibt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
G AVL-Baum Java Basics - Anfänger-Themen 1
G Rot-Schwarz-Baum Java Basics - Anfänger-Themen 8
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Interface Baum visualisieren Java Basics - Anfänger-Themen 37
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
E Baum pfadweise durchlaufen Java Basics - Anfänger-Themen 11
O Naives links rechts einfügen in ADT Baum Java Basics - Anfänger-Themen 8
L Traversierungsverfahren Baum: LevelOrder Java Basics - Anfänger-Themen 17
L Rekursion im Baum Java Basics - Anfänger-Themen 9
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
L B+Baum innere Knoten erstellen Java Basics - Anfänger-Themen 3
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
D Werte AVL-Baum löschen Java Basics - Anfänger-Themen 2
M Binären Baum Kinder setzen Java Basics - Anfänger-Themen 12
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 4
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 0
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
R Baum erzeugen Java Basics - Anfänger-Themen 61
B Baum Traversierung Postorder Java Basics - Anfänger-Themen 6
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
A Voller Baum Java Basics - Anfänger-Themen 7
S n-ärer Baum Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
C kompletter baum Java Basics - Anfänger-Themen 2
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
M Baum Code kurze frage ... Java Basics - Anfänger-Themen 6
D Ein Objekt in einem Baum finden und ausgeben. Java Basics - Anfänger-Themen 4
K Rot-Schwarz-Baum min und max-Tiefe Java Basics - Anfänger-Themen 1
A min() Methode Baum Java Basics - Anfänger-Themen 1
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
Screen 2,4 Baum Frage Java Basics - Anfänger-Themen 6
T Rot-schwarz Baum Problem Java Basics - Anfänger-Themen 3
A Rekursion in Baum und ArrayList als Rückgabe Java Basics - Anfänger-Themen 2
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
C 2-3 Baum Java Basics - Anfänger-Themen 6
H Baum Java Basics - Anfänger-Themen 4
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
L eigenen Baum schreiben Java Basics - Anfänger-Themen 5
Luk10 Anzahl der Knoten in einem Baum ausgeben! Java Basics - Anfänger-Themen 6
T Array in einen Baum zu überführen Java Basics - Anfänger-Themen 3
S Das reinschreiben einer Klasse in den Baum Java Basics - Anfänger-Themen 6
H B-Baum: Knoten Position als Parameter oder als Variable im Objekt? Java Basics - Anfänger-Themen 4
A Baum mit geometricfigur Werte Java Basics - Anfänger-Themen 6
D Datentypen Einfügen im RotSchwarz Baum Java Basics - Anfänger-Themen 2
F FileSystem in Baum darstellen/wurzel festlegen Java Basics - Anfänger-Themen 3
G List als Rückgabewert einer rekursiven Methode (Baum) Java Basics - Anfänger-Themen 3
I Baum graphisch darstellen Java Basics - Anfänger-Themen 2
P Binärer Baum mit Composite-Entwurfsmuster Java Basics - Anfänger-Themen 2
L Baum Swing AVL Java Basics - Anfänger-Themen 4
Binary.Coder 2-3-4 Baum vs. (2,4) Baum Java Basics - Anfänger-Themen 2
ModellbahnerTT Ab-Baum Applet Java Basics - Anfänger-Themen 3
P Baum-Menü in Java Java Basics - Anfänger-Themen 5
G AVL Baum Java Basics - Anfänger-Themen 20
J Baum spiegeln Java Basics - Anfänger-Themen 7
N 2-3 Baum, Einfügen Java Basics - Anfänger-Themen 5
G Rekursion mit Return - Baum durchlaufen Java Basics - Anfänger-Themen 4
G Baum Datenstruktur Java Basics - Anfänger-Themen 2
V Baum mit log n Aufwand für Einfügen und Löschen und. Java Basics - Anfänger-Themen 5
H Tiefensuche im binären Baum Java Basics - Anfänger-Themen 2
P Problem mit Darstellung im Baum Java Basics - Anfänger-Themen 4
G Binärer Baum Java Basics - Anfänger-Themen 3
M Binärer Baum Tiefe Java Basics - Anfänger-Themen 14
G universeller baum Java Basics - Anfänger-Themen 13
G Baum testen Java Basics - Anfänger-Themen 20
B Array To Baum Java Basics - Anfänger-Themen 2
B Baum to Array Java Basics - Anfänger-Themen 17
H Löschen in einem binären Baum führt zu einem StackOverflow Java Basics - Anfänger-Themen 2
L Binären Baum speichern Java Basics - Anfänger-Themen 6
R Pythagoras-Baum Java Basics - Anfänger-Themen 5
W Baum durchlaufen Java Basics - Anfänger-Themen 3
T binärer Baum Java Basics - Anfänger-Themen 3
G eine Knoten aus einem Baum löschen. [SOLVED] Java Basics - Anfänger-Themen 7
P allg. Baum aus Liste Java Basics - Anfänger-Themen 2
J String in binären Baum umwandeln Java Basics - Anfänger-Themen 7
R binärer Baum Java Basics - Anfänger-Themen 2
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben