public node rightPointer;
public bool add(string item)
node newNode = new node();
newNode.leftPointer = null;
newNode.rightPointer = null;
node previous = currentNode;
while (currentNode != null)
if (item.CompareTo(currentNode.data) < 0)
currentNode = currentNode.leftPointer;
currentNode = currentNode.rightPointer;
if (item.CompareTo(previous.data)<0)
previous.leftPointer = newNode;
previous.rightPointer = newNode;
public bool delete(string item)
while ((current != null) && (current.data != item))
if (item.CompareTo(current.data)<0)
current = current.leftPointer;
current = current.rightPointer;
if ((current.leftPointer == null)&&(current.rightPointer==null))
if (previous.data.CompareTo(current.data)>0)
previous.leftPointer = null;
previous.rightPointer = null;
else if (current.rightPointer==null)
if (previous.data.CompareTo(current.data)>0)
previous.leftPointer = current.leftPointer;
previous.rightPointer = current.leftPointer;
else if (current.leftPointer==null)
if (previous.data.CompareTo(current.data)<0)
previous.leftPointer = current.rightPointer;
previous.rightPointer = current.rightPointer;
node rightNode = current.rightPointer;
if (rightNode.leftPointer != null)
node smallest = rightNode;
while (smallest.leftPointer != null)
smallest = smallest.leftPointer;
current.data = smallest.data;
previous.leftPointer = null;
current.data = rightNode.data;
current.rightPointer = null;
public static void Main()
binarytree bt = new binarytree();
Console.WriteLine("Root: " + bt.root.data);
Console.WriteLine("Root/Left Branch: " + bt.root.leftPointer.data);
Console.WriteLine("Root/Right Branch: " + bt.root.rightPointer.data);