示例#1
0
        public void LoadWords(string[] words)
        {
            DigitalTreeNode currNode, newNode;

            foreach (string word in words)
            {
                currNode = RootNode;

                foreach (char ch in word)
                {
                    if (currNode.NextNodes.ContainsKey(ch))
                    {
                        currNode = currNode.NextNodes[ch];
                    }
                    else
                    {
                        newNode = new DigitalTreeNode();
                        currNode.NextNodes.Add(ch, newNode);
                        currNode = newNode;
                    }
                }

                currNode.IsCompleteWord = true;
            }
        }
示例#2
0
        public bool ContainsWord(string word)
        {
            DigitalTreeNode currNode = RootNode;

            foreach (char ch in word)
            {
                if (!currNode.NextNodes.ContainsKey(ch))
                {
                    return(false);
                }

                currNode = currNode.NextNodes[ch];
            }

            return((currNode == null) ? false : currNode.IsCompleteWord);
        }
示例#3
0
        private IEnumerable <string> InnerEnumerator(DigitalTreeNode currNode, StringBuilder prefix)
        {
            if (currNode.IsCompleteWord)
            {
                yield return(prefix.ToString());
            }

            foreach (char ch in currNode.NextNodes.Keys)
            {
                prefix.Append(ch);

                foreach (string word in InnerEnumerator(currNode.NextNodes[ch], prefix))
                {
                    yield return(word);
                }

                prefix.Remove(prefix.Length - 1, 1);
            }
        }
示例#4
0
 public DigitalTree()
 {
     RootNode = new DigitalTreeNode();
 }