Datentypen Knoten Großvater finden?

Status
Nicht offen für weitere Antworten.

Terry12

Aktives Mitglied
hi Leute,
ich will in einem Red black baum den großvater knoten ermitteln bzw finden,
wie mach ich das?
für den Vater geht das ja so:

Java:
public void insert(int id, double dd)
      {
      Node newNode = new Node();    // make new node
      newNode.iData = id;           // insert data
      newNode.dData = dd;
      if(root==null)                // no node in root
         root = newNode;
      else                          // root occupied
         {
         Node current = root;       // start at root
         Node parent;
         while(true)                // (exits internally)
            {
            parent = current;
            if(id < current.iData)  // go left?
               {
               current = current.leftChild;
               if(current == null)  // if end of the line,
                  {                 // insert on left
                  parent.leftChild = newNode;
                  return;
                  }
               }  // end if go left
            else                    // or go right?
               {
               current = current.rightChild;
               if(current == null)  // if end of the line
                  {                 // insert on right
                  parent.rightChild = newNode;
                  return;
                  }
               }  // end else go right
            }  // end while
         }  // end else not root
      }  // end insert()

wie mach ich das fürn Großvater? Brauch ich in jedem Knoten eine Referenz previous, also auf den Vorgängerknoten?
oder geht das auch anders?
 

Fant

Bekanntes Mitglied
Du sprichst davon, dass du einen Vater-Knoten suchen willst, aber dann postest du eine insert-Methode? Was hat das denn miteinander zu tun, außer der Tatsache, dass da im Code irgendwo das Wort parent auftaucht?

Wenn du einen parent-Knoten angeben kannst, dann sollte der grantparent-Knoten doch eigentlich keine Probleme bereiten. Das ist einfach der parent-Knoten vom parent-Knoten ...
 

Terry12

Aktives Mitglied
ich hab aber keine Ahnung wie ihc das implementieren soll bzw wie der Algorithmus dazu geht, ich wollte ienen rot schwarz baum machen dafür brauch ich ja 5 Methoden um alle Fälle abzudecken und dann muss ich mir unter anderem auch einen Pointer auf den Großvater merken...
 

Sesostris

Aktives Mitglied
Der Großvater ist nichts anderes als der Vater des Vaters. Wenn du in jedem Node die parent-Information mitspeicherst, geht das ziemlich unkompliziert:
Java:
	Node grandparent(Node n) {
		if (n != null)
			return n.parent.parent;
		return null;
	}
 

Terry12

Aktives Mitglied
jo WENN ich die parent information speichere, damit hab ich aber wieder ein neues problem... WIE mach ich das? brauch ich ja zu jedem Knoten einen pointer information auf den vorgänger... und wie stell ich das an? also quasi genausoviel pointeraufwand wie bei einer double linked list oder wie?
 

Sesostris

Aktives Mitglied
Der zusätzliche Aufwand ist minimal, denn wenn du einen neuen Knoten einfügst, musst du sowieso zwangsweise wissen, wer der Vaterknoten ist. Diese Information gibst du deinem neu erstellten Knoten mit und das wars.

Zum Red-black Tree gibt es übrigens einen sehr gelungenen Wikipedia-Artikel, den du dir - sofern nicht bereits geschehen - ansehen könntest.
 

Fant

Bekanntes Mitglied
Alternativ kommt man bei der Suche nach einem Knoten ja auch an seinem parent-Knoten und dessen parent-Knoten vorbei. Man kann sich also ja bei der Suche auch einfach den (Vor)Vorgänger merken und dann ausgeben.
 

Terry12

Aktives Mitglied
den wikipedia artikel kenn ich schon, allerdings ist mir die implementierung zu ungenau bzw bringt mir nichts :
node grandparent(node n) {
return n->parent->parent;
...
 

Sesostris

Aktives Mitglied
Dort ist jede Operation mit ihren Unterfällen genau erklärt, das ganze wird mit Bildern veranschaulicht und den C-Code kannst du fast 1 zu 1 so verwenden.
Was bitte willst du mehr? Dass dir jemand das fertige Programm liefert? Der erste Treffer bei Google zum Stichwort "red-black-tree java".
 

Terry12

Aktives Mitglied
hab noch eine kleine Frage...

Java:
<<node constructor>>=
public Node(K key, V value, Color nodeColor, Node<K,V> left, Node<K,V> right) {
    this.key = key;
    this.value = value;
    this.color = nodeColor;
    this.left = left;
    this.right = right;
    if (left  != null)  left.parent = this;
    if (right != null) right.parent = this;
    this.parent = null;
}

this.key , this.value usw. ist klar was das ist ,die Objekt-Werte von Node werden durch die Parameterwerte überschrieben, aber was bedeutet wenn this alleine steht? für was steht this dann und wann ist this überall gültig?
Java:
right.parent = this;
Ich nehme mal an "this" steht für die aktuelle Instanz vom Konstruktor "Node" ,also für den aktuellen Knoten ?? kann mir das jemand nochmal genauer erklären? thx...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
Cassy3 Binärer Suchbaum Knoten rauslöschen Java Basics - Anfänger-Themen 1
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
S Binärbäume knoten zählen Java Basics - Anfänger-Themen 16
T Collections Methode (Knoten hinzufügen) für Graphen Java Basics - Anfänger-Themen 32
H Knoten-Reihenfolge einer LinkedList invertieren Java Basics - Anfänger-Themen 11
G Binärer Suchbaum Knoten zählen Java Basics - Anfänger-Themen 1
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
O Suchbaum Elternknoten finden Level eines Knoten bestimmen Java Basics - Anfänger-Themen 24
O Knoten und Liste verarbeitung Java Basics - Anfänger-Themen 20
E Knoten eines Baumes unter Bedinung zählen Java Basics - Anfänger-Themen 2
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
L B+Baum innere Knoten erstellen Java Basics - Anfänger-Themen 3
L Graphen: Anzahl Knoten // Knoten in Array speichern Java Basics - Anfänger-Themen 4
I Erste Schritte Referenz zum Knoten davor, in einer Liste 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
S Baumstruktur: tiefsten Knoten finden Java Basics - Anfänger-Themen 3
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
S Methoden Abtrennen ab einem gegebenen Knoten eines Binärbaums Java Basics - Anfänger-Themen 4
M Binärbaum - Problem bei Knoten anhängen / löschen Java Basics - Anfänger-Themen 5
B JTree knoten wird nicht übernommen Java Basics - Anfänger-Themen 4
L BinärTree, Knoten löschen Java Basics - Anfänger-Themen 6
Luk10 Anzahl der Knoten in einem Baum ausgeben! Java Basics - Anfänger-Themen 6
T gebe mir den ersten eltern knoten Java Basics - Anfänger-Themen 3
K verkettete Listen - Klasse Knoten Java Basics - Anfänger-Themen 19
L LinkedList vorgänger Knoten zurück geben Java Basics - Anfänger-Themen 4
H B-Baum: Knoten Position als Parameter oder als Variable im Objekt? Java Basics - Anfänger-Themen 4
D An bestimmten Knoten einer Liste zugreifen Java Basics - Anfänger-Themen 4
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
M Nachbar von Knoten bestimmen Java Basics - Anfänger-Themen 8
0x7F800000 zwei adjazenzlisten für jeden knoten eines graphen sinnvoll? Java Basics - Anfänger-Themen 17
C Bäume in Java. Knoten in Array speichern Java Basics - Anfänger-Themen 3
G eine Knoten aus einem Baum löschen. [SOLVED] Java Basics - Anfänger-Themen 7
F JTree-Knoten (DefaultMutableTreeNode) formatieren ? Java Basics - Anfänger-Themen 3
Y JTree: ein Knoten als Objekt Java Basics - Anfänger-Themen 2
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
J for Schleife kleinste Zufallszahl finden Java Basics - Anfänger-Themen 25
Substring in einem String finden Java Basics - Anfänger-Themen 13
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
districon Java Nachhilfe - wo finden? Java Basics - Anfänger-Themen 9
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
M Datums-Palindrome finden Java Basics - Anfänger-Themen 9
H Primzahlen finden - Zeit optimieren Java Basics - Anfänger-Themen 34
B in einem Array den nächstgelegenen Wert zu einem eingabewert finden Java Basics - Anfänger-Themen 8
B String - Wörter finden, welches Punkt und entsprechender Pre / Suffix hat? Java Basics - Anfänger-Themen 30
S Schwachstelle finden Java Basics - Anfänger-Themen 11
D kleinste Wurzel finden Java Basics - Anfänger-Themen 9
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
Devin Wo kann man einen Java Lehrplan finden? Java Basics - Anfänger-Themen 5
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
V Beliebige Dreistellige Zahl Teiler finden Java Basics - Anfänger-Themen 4
J Lösungen zu einem Lückentext finden Java Basics - Anfänger-Themen 0
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
S Streams - kleinstes Element finden Java Basics - Anfänger-Themen 4
L Koordinate mit meisten Überlappungen in 3D-Raum finden Java Basics - Anfänger-Themen 9
KogoroMori21 Größten gemeinsamen Teiler finden Java Basics - Anfänger-Themen 7
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
I Preis finden für ein Uber-App(?) Java Basics - Anfänger-Themen 3
D Binärbaum Blätter finden und Ausgeben Java Basics - Anfänger-Themen 22
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
H pfad finden Java Basics - Anfänger-Themen 12
G Excle datei aus resources folder finden und lesen Java Basics - Anfänger-Themen 5
M Duplikate in Array finden... Java Basics - Anfänger-Themen 9
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
S Maxium aus einer File finden Java Basics - Anfänger-Themen 12
R HTTP-Links in Java Class finden Java Basics - Anfänger-Themen 3
S Substrings finden Java Basics - Anfänger-Themen 5
C Finden mehrerer Lösungen Java Basics - Anfänger-Themen 0
L Backupdateien finden Java Basics - Anfänger-Themen 8
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
N Anfang eine Array Schleife finden Java Basics - Anfänger-Themen 18
D Erste Schritte Aktivsten Zweistündigen Abschnitt finden Java Basics - Anfänger-Themen 35
I Richtige Java-Version finden? Java Basics - Anfänger-Themen 17
DaCrazyJavaExpert Alle Zahlenkombinationen aus 9 zahlen finden Java Basics - Anfänger-Themen 17
S Erste Schritte Zwischen zwei Punkten ein Minimumpkt./Maxima finden Java Basics - Anfänger-Themen 1
M Denn dichtesten Wert finden Java Basics - Anfänger-Themen 3
N Objekte in ArrayList finden Java Basics - Anfänger-Themen 10
D Die Zahl in der Mitte finden Java Basics - Anfänger-Themen 20
kilopack15 Größte zahl eines Arrays finden Java Basics - Anfänger-Themen 1
H Fehler finden Java Basics - Anfänger-Themen 5
R Best Practice Palindrom in einem Text finden Java Basics - Anfänger-Themen 18
M Kleinsten Index in Array finden Java Basics - Anfänger-Themen 6
S Objekt finden und benutzen Java Basics - Anfänger-Themen 3
C Lottospiel kann Fehler nicht finden Java Java Basics - Anfänger-Themen 6
F System kann die Datei nicht finden Java Basics - Anfänger-Themen 7
D Werte in eckige Klammern finden Java Basics - Anfänger-Themen 3
S Input/Output Buchstaben in Eingabe finden und ausgeben Java Basics - Anfänger-Themen 5
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben