private void RepairTree(RBNode node) { if (node == null) { return; } try { if (node.Parent == null) { node.Color = Color.Black; return; } else if (node.Parent.Color == Color.Black) { return; } else if ((node.Uncle().Color == Color.Red && node.Uncle().leaf != Leaf.LEAF)) { Case1(node); } else { Case2(node); } } catch (Exception e) { //Nooope } RepairTree(node.Parent); }
private void Case1(RBNode node) { node.Parent.Color = Color.Black; node.Uncle().Color = Color.Black; node.Grandparent().Color = Color.Red; RepairTree(node.Grandparent()); }