public void Add(IComparable obj) { if (obj == null) { throw new ArgumentNullException("obj"); } int num2 = -1; BSTreeNode node = new BSTreeNode(obj); BSTreeNode root = base.Root as BSTreeNode; BSTreeNode node3 = null; while (root != null) { int num = obj.CompareTo(root.Value); if (num == 0) { return; } if (num > 0) { node3 = root; root = root.LeftChild; num2 = 0; } else if (num < 0) { node3 = root; root = root.RightChild; num2 = 1; } if (node3 == null) { base.proot = node; } else { node3[num2] = node; } } }
protected virtual BSTreeNode Search(BSTreeNode current, IComparable obj) { if (current == null) { return null; } int num = ((IComparable) current.Value).CompareTo(obj); if (num == 0) { return current; } if (num > 0) { return this.Search(current.LeftChild, obj); } return this.Search(current.RightChild, obj); }