Beispiel #1
0
 public void Remove(IBinaryTreeNode <TItem> node, IBinaryTreeNode <TItem> parent)
 {
     if (node.Item.CompareTo(Item) < 0)
     {
         LeftNode?.Remove(node, this);
     }
     else if (node.Item.CompareTo(Item) > 0)
     {
         RightNode?.Remove(node, this);
     }
     else
     {
         if (LeftNode != null && RightNode != null)
         {
             parent.RightNode = MinItem;
         }
         else if (parent.LeftNode == this)
         {
             parent.LeftNode = LeftNode ?? RightNode;
         }
         else if (parent.RightNode == this)
         {
             parent.RightNode = LeftNode ?? RightNode;
         }
     }
 }