示例#1
0
 /// <summary>
 /// Constructor that defaults to empty binary search tree.
 /// </summary>
 public StringSet()
 {
     _searchTree = new GenericBinaryTreeNode<string>();
     _searchTree.IsEmpty = true;
 }
示例#2
0
 /// <summary>
 /// Actual implementation of adding strings to given IList
 /// </summary>
 /// <param name="strings">Strings to add to</param>
 /// <param name="tree">Tree to add from</param>
 private void AddAllStrings(IList strings, GenericBinaryTreeNode<string> tree)
 {
     if(!tree.LeftChild.IsEmpty)
         AddAllStrings(strings, tree.LeftChild);
     strings.Add(tree.RootTyped);
     if (!tree.RightChild.IsEmpty)
         AddAllStrings(strings, tree.RightChild);
 }
示例#3
0
        /// <summary>
        /// Implementation for adding a string to the binary search tree
        /// </summary>
        /// <param name="st">String to add</param>
        /// <param name="tree">Tree to add it to</param>
        private void AddString(string st, GenericBinaryTreeNode<string> tree)
        {
            if (tree.LeftChild == null || tree.RightChild == null)
            {
                GenericBinaryTreeNode<string> child1 = new GenericBinaryTreeNode<string>();
                GenericBinaryTreeNode<string> child2 = new GenericBinaryTreeNode<string>();

                tree.LeftChild = child1;
                tree.RightChild = child2;
            }

            if (tree.IsEmpty)
                tree.Root = st;
            else if (st.CompareTo(tree.RootTyped) > 0)
            {
                if (!tree.RightChild.IsEmpty)
                    AddString(st, tree.RightChild);
                else
                {
                    tree.RightChild = new GenericBinaryTreeNode<string>();
                    tree.RightChild.IsEmpty = false;
                    tree.RightChild.RootTyped = st;
                }
            }
            else if (st.CompareTo(tree.RootTyped) < 0)
            {
                if (!tree.LeftChild.IsEmpty)
                    AddString(st, tree.LeftChild);
                else
                {
                    tree.LeftChild = new GenericBinaryTreeNode<string>();
                    tree.LeftChild.IsEmpty = false;
                    tree.LeftChild.RootTyped = st;
                }
            }
            // if it matched... don't add it
        }