Rot-schwarz Baum Problem

Terry12

Aktives Mitglied
hi, was bedeuten die Methoden
Java:
if (isRed(node) && isRed(node.right) && !isRed)
und
if (isRed(node) && isRed(node.left) && isRed)
in unten aufgeführtem Quellcode für mein Baum?

Java:
/**Die Klasse RBTree repraesentiert den Rot-Schwarz Baum mit seinen Methoden.
 * 
 * 
 */
public class RBTree implements IRBTree<String> {
 
    public static final boolean RED = true;
    public static final boolean BLACK = false;
    public Node root;
 
    public String get(String key) throws NullPointerException {
        assert (key!=null): "Key darf nicht leer sein!";
        Node node = root;        
 
        while (node != null) {
            int cmp = ((String)key).compareTo((String)node.key);
                   if (cmp < 0) {
                node = node.left;
                System.out.println("Links: " +node.toString());
            } else if (cmp > 0) {
                node = node.right;
                System.out.println("Rechts: "+node.toString());
            } else if (cmp == 0) {
                return (String)node.key;
            }
        }
        return null;
    }
 
    public boolean isRed(Node node) {
        if (node == null){
            return false;
        }
        return node.color;
    }
 
    private Node rotateLeft(Node h) {
        if (h == null) return null;
        
        Node x = h.right;
        h.right = x.left;
        x.left = h;
        return x;
    }
 
    private Node rotateRight(Node h) {
        if (h == null) return null;
        
        Node x = h.left;
        h.left = x.right;
        x.right = h;
        return x;
    }
 
    public Node insert(Node node, String key, boolean isRed) {
 
        if (node == null) {
            return new Node(key, RED);
        }
 
        if (isRed(node.left) && isRed(node.right)) {
            node.color = RED;
            node.left.color = BLACK;
            node.right.color = BLACK;
        }
 
        int cmp = ((String)key).compareTo((String)node.key);
 
        if (cmp < 0) {
            node.left = insert(node.left, key,BLACK);
 
            if (isRed(node) && isRed(node.left) && isRed) {
                node = rotateRight(node);
            }
 
            if (isRed(node.left) && isRed(node.left.left)) {
                node = rotateRight(node);
                node.color = BLACK;
                node.right.color = RED;
            }
 
        } else {
            node.right = insert(node.right, key,  RED);
 
            if (isRed(node) && isRed(node.right) && !isRed) {
                node = rotateLeft(node);
            }
 
            if (isRed(node.right) && isRed(node.right.right)) {
                node = rotateLeft(node);
                node.color = BLACK;
                node.left.color = RED;
            }
        }
        return node;
    }
 
    public void insert(String key) {
        this.root = insert(this.root, key,  BLACK);
        this.root.color = BLACK;
    }
    
    public Node getRoot()
    {
        return root;
    }
    
    /*public void traverseInOrder(Node root)
    {            
        String temp;
        StringBuffer sb= new StringBuffer("-->");
        
        if (root.left !=null){
            traverseInOrder(root.left);
            sb.append(root.toString());
            sb.toString();
            System.out.println(sb);
        }
        if  (root.right !=null)  {
            traverseInOrder(root.right);            
        }     
        
    }*/
    
    public void traverseInOrder(Node root)
    {    
        //Node node = root;
        String temp;
        StringBuffer s= new StringBuffer();
        
        if (root !=null){
            traverseInOrder(root.left);
            temp = ((String)root.toString());
            s.append(temp).append("-->");
            traverseInOrder(root.right);  
            System.out.println(s);
        } 
    }
            
    public String toString(Node n)
    {
        StringBuffer sb = new StringBuffer();
        sb.append("Wurzel: " + this.getRoot()+ "Knoten: " +n.toString());
        return sb.toString();
    }
    
}

und warum fügt er bei cmp<0 bei insert einen schwarzen Knoten ein?
Java:
        if (cmp < 0) {
            node.left = insert(node.left, key,BLACK);
 

Terry12

Aktives Mitglied
naja ich denke mal die beiden oberen Methoden behandeln ein paar Fälle bezueglich neu Anordnung des Baums, aber da gibt es doch eigentlich 5 Fälle die zu unterscheiden sind oder?
und warum man unten beim einfügen einen schwarzen einfügt , wenn cmp<0 versteh ich auch nicht...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Rot-Schwarz-Baum Java Basics - Anfänger-Themen 8
K Rot-Schwarz-Baum min und max-Tiefe Java Basics - Anfänger-Themen 1
G Rot-Schwarz-Bäume Java Java Basics - Anfänger-Themen 10
A BufferedImage zeigt nur schwarz Java Basics - Anfänger-Themen 3
M Rot Schwarz Bäume, ausführen? Java Basics - Anfänger-Themen 6
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
B Theorie Rot-Schwarz-Bäume Java Basics - Anfänger-Themen 2
S JFrame ist nicht schwarz Java Basics - Anfänger-Themen 5
J Frame bleibt schwarz beim Laden Java Basics - Anfänger-Themen 11
B Durchsichtige Images werden beim kopieren schwarz Java Basics - Anfänger-Themen 21
G eclipse Konsole schwarz Java Basics - Anfänger-Themen 4
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
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
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
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
H Baum Java Basics - Anfänger-Themen 11
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
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben