예제 #1
0
 /// <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);
         }
     }
 }
예제 #2
0
        /// <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);
        }