Binärer Suchbaum

Status
Nicht offen für weitere Antworten.
E

Exa

Gast
Hallo @all.
Ich muss für mein Programmierpraktikum ( bin Infostudent im ersten Semester ) ein Binären Suchbaum programmieren und ihn dann wahlweise inorder, preorder oder postorder ausgeben. Das einfügen klappt gut. Aber ich grübel hin und her wie ich am dümmsten diesen baum dann ausgebe.. in-,pre- bzw postorder und komme nicht drauf. Wäre für nen denkanstoss dankbar. Quelltext will ich allerdings nicht.. möchte das schon selbst programmieren.
Der Baum is ne zeigervekttet Liste wobei jedes Element immer auf das nächste rechte und linke zeigt und der Zeiger immer auf der Wurzel ist.

Bin für jede Idee dankbar.

So long

exa
 
S

SlaterB

Gast
wie gibts du denn überhaupt den Inhalt des Baumes in irgendeiner Ordnung aus?

das ist doch eine einfache Rekursion:
in jedem Baumknoten müssen prinzipiell drei Befehle gestartet werden:
gib linken Teilbaum aus
gib mich selbst aus
gib rechten Teilbaum aus,

je nach Reihenfolge dieser drei Befehle dürfte sind die Order ergeben?!
 
E

Exa

Gast
Naja. Wenn ich den InOrder ausgeben will muss ich mit dem Knoten im Baum ganz Links unten anfangen und dann alle Knoten von links nach rechts der selben ordung ausgeben. Dann quasi eine ordnung runter und alle Knoten von links nach rechts ausgeben etc bis Wurzel.. dann das selbe spiel mit dem rechten Baum. Das problem.. bzw mein Problem ist... ich kann ja auf dem Baum nur vorwärts laufen weil es keinen Zeiger gitb, der zurück zeigt. Die Knoten haben eine klasse bekommen die wir verwenden müssen ( die wurde uns so geben );

Code:
public class Student {
	
	public Student(int matrikel, String name) {
		this.matrikel = matrikel;
		this.name = name;
	}
	
	public int matrikel;
	public String name;
	
	public Student links;
	public Student rechts;
}

aber da gibt es keine option das ich für einen Studenten auch eine Ordung festlegen kann.
 
E

Exa

Gast
ach und wenn ich den baum dann rotieren lassen will, Zwecks dem Gleichgewicht würden ja auch alle ordnungen kaputt gehen. also muss das auch ohne gehen.
Bei dem Algorithmus für inorder renne ich so lang nach links bis nachfolger null wird und geb ihn aus.. das is ja kein thema... aber dann muss ich den rechten vom vorgänger ausgeben bzw wenn der unterknoten.. etc... keine ahnung :?: :cry:
 
G

Guest

Gast
Hier ein einfaches Beispiel
Code:
public class BinTree
{
  static class Node
  {
    public Node left;
    public Node right;
    public String name;

    public Node(String name, Node left, Node right)
    {
      this.name  = name;
      this.left  = left;
      this.right = right;
    }
  }

  public static void preOrder(Node node)
  {
    System.out.print(node.name);
    if(node.left != null)
      preOrder(node.left);
    if(node.right != null)
      preOrder(node.right);
  }

  public static void inOrder(Node node)
  {
    if(node.left != null)
      inOrder(node.left);
    System.out.print(node.name);
    if(node.right != null)
      inOrder(node.right);
  }

  public static void postOrder(Node node)
  {
    if(node.left != null)
      postOrder(node.left);
    if(node.right != null)
      postOrder(node.right);
    System.out.print(node.name);
  }

  public static void main(String argv[])
  {
    /*

         A
       /    \
      B      D
      \    /   \
       C  E     H
         / \   /
        F   G I

    */
    Node c = new Node("C", null, null);
    Node f = new Node("F", null, null);
    Node g = new Node("G", null, null);
    Node i = new Node("I", null, null);
    Node b = new Node("B", null, c);
    Node e = new Node("E", f, g);
    Node h = new Node("H", i, null);
    Node d = new Node("D", e, h);
    Node a = new Node("A", b, d);

    preOrder(a);
    System.out.println();
    inOrder(a);
    System.out.println();
    postOrder(a);
  }
}
 
E

Exa

Gast
Wollte zwar keinen quelltext aber das is insofern nicht so wild, das die ausgabe noch nicht ganz so ist wie sie sein soll wenn ich das für mein programm portiere.. hab also noch was zu knobeln :D... auf jeden fall vielen lieben dank für die evtl. arbeit falls du es eben geschrieben hast und vieeelen dank das das so fix ging.. is nen prima forum

ps : wenn hier mal nen admin vorbei rennt... macht nen haken :toll:
 
G

Guest

Gast
Zeichne am besten jeden Schritt auf, damit du auch verstehst, wie es funktioniert.
 
J

JimBo

Gast
Das Thema kommt mir grade ganz gelegen. Wie sieht es aus wenn ich ein Element wieder aus dem Baum löschen möchte. Ich habe es so probiert. Er läuft mit inorder solange durch bis er den passenden eintrag gefunden hat. Dann setzt er diesen auf null und somit müsste doch der gewünschte eintrag und alle seine kinder weg sein. ?? Ich bekomm dann aber leider eine NullPointerException. Wie kann ich verhindern, dass dies auftritt??
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Cassy3 Binärer Suchbaum Knoten rauslöschen Java Basics - Anfänger-Themen 1
G Java Binärer Suchbaum Java Basics - Anfänger-Themen 1
G Binärer Suchbaum Knoten zählen Java Basics - Anfänger-Themen 1
L Binärer Suchbaum Java Basics - Anfänger-Themen 2
U Binärer Suchbaum delete Java Basics - Anfänger-Themen 1
S Binärer Suchbaum - Size als Variabel in innerer Klasse speichern Java Basics - Anfänger-Themen 2
E binärer suchbaum Java Basics - Anfänger-Themen 8
K Binärer Suchbaum Java Basics - Anfänger-Themen 3
D Binärer Suchbaum Java Basics - Anfänger-Themen 11
Q Binärer suchbaum Java Basics - Anfänger-Themen 2
Y Binärer Suchbaum Java Basics - Anfänger-Themen 5
M Binärer Suchbaum Höhe Java Basics - Anfänger-Themen 6
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
R binärer Suchbaum Java Basics - Anfänger-Themen 1
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
H binärer String nach int convertieren Java Basics - Anfänger-Themen 3
T Binärer String zu Integer Java Basics - Anfänger-Themen 12
P Binärer Baum mit Composite-Entwurfsmuster Java Basics - Anfänger-Themen 2
S binärer string in negativen int umwandeln Java Basics - Anfänger-Themen 4
C binärer Exponentenbereich bezogen auf das Dezimalsystem Java Basics - Anfänger-Themen 2
G Binärer Baum Java Basics - Anfänger-Themen 3
M Binärer Baum Tiefe Java Basics - Anfänger-Themen 14
T binärer Baum Java Basics - Anfänger-Themen 3
R binärer Baum Java Basics - Anfänger-Themen 2
O Suchbaum Elternknoten finden Level eines Knoten bestimmen Java Basics - Anfänger-Themen 24
N ID3 - Suchbaum ertellen! Java Basics - Anfänger-Themen 0
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
C Methoden Methode zu einem Binären Suchbaum Java Basics - Anfänger-Themen 8
J Suchbaum Java Basics - Anfänger-Themen 3
B Datentypen Suchbaum - Rekursive Ausgabe Java Basics - Anfänger-Themen 1
N Binären Suchbaum erstellen, nachzuvollziehen Java Basics - Anfänger-Themen 0
W binären Suchbaum Kantenanzahl Java Basics - Anfänger-Themen 3
G Rekursion Suchbaum Java Basics - Anfänger-Themen 2
W Löschen Datenknoten Suchbaum Java Basics - Anfänger-Themen 4
H Suchbaum iterativ absteigen? Java Basics - Anfänger-Themen 3
N Tiefe im binären Suchbaum Java Basics - Anfänger-Themen 9
I Rekursives Löschen in Binärem Suchbaum Java Basics - Anfänger-Themen 2
A Suchbaum Java Basics - Anfänger-Themen 4
DasDogma Suche im Suchbaum Java Basics - Anfänger-Themen 2
D suchbaum out of heap space Java Basics - Anfänger-Themen 8
G Binäre Suchbaum + Erstellung des Programmes Java Basics - Anfänger-Themen 4
Bierhumpen Suchbaum problem. Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben