void AddLoop(RBValNode <T> newItem, RBNode <T> curr) { int comparison = newItem.val.CompareTo(curr.val); if (comparison < 0) { if (curr.left is RBNullNode <T> ) { curr.left = newItem; newItem.parent = curr; newItem.color = Enums.Colors.red; InsertCheck(newItem); return; } AddLoop(newItem, curr.left); } else { if (curr.right is RBNullNode <T> ) { curr.right = newItem; newItem.parent = curr; newItem.color = Enums.Colors.red; InsertCheck(newItem); return; } AddLoop(newItem, curr.right); } }
public void AddWithNode(RBValNode <T> newItem) { if (topNode == null) { topNode = newItem; newItem.left = new RBNullNode <T>(); InsertCheck(newItem); return; } AddLoop(newItem, topNode); }