예제 #1
0
파일: Trie.cs 프로젝트: oscarwong/pa2cloud
        public void insertWord(string word)
        {
            int      wordLength   = word.Length;
            int      currentIndex = 0;
            TrieNode currentNode  = root;

            foreach (char c in word)
            {
                if (!currentNode.edge.ContainsKey(c))
                {
                    TrieNode newNode = new TrieNode(c);
                    currentNode.edge.Add(c, newNode);
                    currentNode = newNode;
                    currentIndex++;
                    if (currentIndex == wordLength)
                    {
                        currentNode.lastChar = true;
                    }
                    else
                    {
                        continue;
                    }
                }
                else
                {
                    currentIndex++;
                    currentNode = currentNode.getNode(c);
                    if (currentIndex == wordLength)
                    {
                        currentNode.lastChar = true;
                    }
                }
            }
        }
예제 #2
0
파일: Trie.cs 프로젝트: oscarwong/pa2cloud
        private TrieNode findRoot(string prefix)
        {
            TrieNode currentNode = root;

            foreach (char c in prefix)
            {
                if (currentNode.edge.ContainsKey(c))
                {
                    currentNode = currentNode.getNode(c);
                }
                else
                {
                    return(null);
                }
            }
            return(currentNode);
        }