/// <summary> /// Adds to. /// </summary> /// <param name="node">The node.</param> /// <param name="value">The value.</param> private void AddTo(BinaryTreeNode <T> node, T value) { if (node.Compare(value) > 0) { if (node.LeftTreeNode == null) { node.LeftTreeNode = new BinaryTreeNode <T>(value); } else { AddTo(node.LeftTreeNode, value); } } else { if (node.RightTreeNode == null) { node.RightTreeNode = new BinaryTreeNode <T>(value); } else { AddTo(node.RightTreeNode, value); } } }
/// <summary> /// Finds the with parent. /// </summary> /// <param name="value">The value.</param> /// <param name="parent">The parent.</param> /// <returns></returns> private BinaryTreeNode <T> FindWithParent(T value, out BinaryTreeNode <T> parent) { BinaryTreeNode <T> current = head; parent = null; while (current != null) { int result = current.Compare(value); if (result > 0) { parent = current; current = current.LeftTreeNode; } else if (result < 0) { parent = current; current = current.RightTreeNode; } else { break; } } return(current); }