Пример #1
0
 public static void printTree(Node start, int level, string side)
 {
     if (!start.Equals(nil)) {
         Console.WriteLine ("(" + start.getKey() + " - " + start.getColor() + " - " + side + " - s: " + start.getSize() +  " - p: " + start.getPlayerNumber() + " [" + level + "])");
         printTree (start.getLeft (), level + 1, "left");
         printTree (start.getRight(), level + 1, "right");
     }
 }
Пример #2
0
        public static void insert(Node z)
        {
            Node y = nil;
            Node x = root;
            // path from root to correct node
            while (!x.Equals(nil)) { // x is niet nil
                y = x;
                if (z.getKey () < x.getKey ()) { // key van z is kleiner dan key van x -> ga naar links
                    x = x.getLeft ();

                } else { // key van z is groter dan key van x -> ga naar rechts
                    x = x.getRight();
                }
                y.incrementSize ();
            }
            z.setParent (y); // y (laatste node in juiste tak) is parent van z
            if (y.Equals(nil)) { // y (parent van z) is nil -> z is de root
                root = z;
            } else if (z.getKey () < y.getKey ()) { // key van z is kleiner dan key van y -> z is left node van y
                y.setLeft (z);
            } else {  // key van z is groter dan key van y -> z is right node van y
                y.setRight (z);
            }
            z.setLeft (nil); // z heeft geen kinderen
            z.setRight (nil); // z heeft geen kinderen
            z.setColor(false); // z is rood
            z.setSize(1);
            fixup (z);
        }