private void SplitNode() { ChooseTwoNewReplacementNodes(out Node <T> newNode1, out Node <T> newNode2); PartitionThisNodesChildrenToNewNodes(newNode1, newNode2); if (IsRoot) { CreateNewRootNode(newNode1, newNode2); } Parent.Children.Remove(this); Parent.AddChildToNode(newNode1, Tree.GetDistance(Parent.Item, newNode1.Item)); Parent.AddChildToNode(newNode2, Tree.GetDistance(Parent.Item, newNode2.Item)); }