private void PerformInsertionReordering4(RedBlackTree <T> newNode) { RedBlackTree <T> k = newNode; RedBlackTree <T> p = this; RedBlackTree <T> g = parent; RedBlackTree <T> s = Sibling; RedBlackTree <T> newG = new RedBlackTree <T>(g.content); newG.color = "Red"; newG.leftTree = s; s.parent = newG; newG.rightTree = p.leftTree; p.leftTree.parent = newG; g.content = p.content; g.leftTree = newG; newG.parent = g; g.rightTree = k; k.parent = g; }
private void PerformInsertionRecoloring(RedBlackTree <T> newNode) { RedBlackTree <T> k = newNode; RedBlackTree <T> p = this; RedBlackTree <T> g = parent; RedBlackTree <T> s = Sibling; g.color = "Red"; p.color = "Black"; s.color = "Black"; // Handle case if g is the root node if (g.parent == null) { g.color = "Black"; } else if (g.parent.color == "Red") { g.parent.RebalanceTree(g); } }
public RedBlackTree(T item) { content = item; leftTree = new RedBlackTree <T>(); rightTree = new RedBlackTree <T>(); }