public void Insert(T value) { if (value == null) { throw new ArgumentNullException("Cannot insert null value!"); } this.root = Insert(value, null, root); }
private void Remove(BineryTreeNode <T> nodeToDelete) { if (nodeToDelete.leftChild != null && nodeToDelete.rightChild != null) { BineryTreeNode <T> replacement = nodeToDelete.rightChild; while (replacement.leftChild != null) { replacement = replacement.leftChild; } nodeToDelete.value = replacement.value; nodeToDelete = replacement; } BineryTreeNode <T> theChild = nodeToDelete.leftChild != null ? nodeToDelete.leftChild : nodeToDelete.rightChild; if (theChild != null) { theChild.parent = nodeToDelete.parent; if (nodeToDelete.parent == null) { root = theChild; } else { if (nodeToDelete.parent.leftChild == nodeToDelete) { nodeToDelete.parent.leftChild = theChild; } else { nodeToDelete.parent.rightChild = theChild; } } } else { if (nodeToDelete.parent == null) { root = null; } else { if (nodeToDelete.parent.leftChild == nodeToDelete) { nodeToDelete.parent.leftChild = null; } else { nodeToDelete.parent.rightChild = null; } } } }
public void Remove(T value) { BineryTreeNode <T> nodeToDelete = Find(value); if (nodeToDelete == null) { return; } Remove(nodeToDelete); }
public BineryTreeNode(T value) { if (value == null) { throw new ArgumentNullException("Cannot insert null values!"); } this.value = value; this.parent = null; this.leftChild = null; this.rightChild = null; }
private BineryTreeNode <T> Insert(T value, BineryTreeNode <T> parentNode, BineryTreeNode <T> node) { if (node == null) { node = new BineryTreeNode <T>(value); node.parent = parentNode; } else { int compareTo = value.CompareTo(node.value); if (compareTo < 0) { node.leftChild = Insert(value, node, node.leftChild); } else if (compareTo > 0) { node.rightChild = Insert(value, node, node.rightChild); } } return(node); }
public BineryTreeNode <T> Find(T value) { BineryTreeNode <T> node = this.root; while (node != null) { int compareTo = value.CompareTo(node.value); if (compareTo < 0) { node = node.leftChild; } else if (compareTo > 0) { node = node.rightChild; } else { break; } } return(node); }
public BinerySearchTree() { this.root = null; }
public int CompareTo(BineryTreeNode <T> other) { return(this.value.CompareTo(other.value)); }
public override bool Equals(object obj) { BineryTreeNode <T> other = (BineryTreeNode <T>)obj; return(this.CompareTo(other) == 0); }