コード例 #1
0
ファイル: JTrie.cs プロジェクト: jerry82/JData
        public void Add(string str)
        {
            JTrieNode cur = _root;
            JTrieNode tmp = null;
            foreach (char ch in str)
            {
                if (cur.Children == null)
                    cur.Children = new Dictionary<int, JTrieNode>();

                if (!cur.Children.Keys.Contains(ch))
                {
                    tmp = new JTrieNode() { NodeKey = ch };
                    cur.Children.Add(ch, tmp);
                }

                cur = cur.Children[ch];
                cur.NoOfPrefix += 1;
            }

            cur.IsWord = true;
        }
コード例 #2
0
ファイル: JTrie.cs プロジェクト: jerry82/JData
 /// Init root node
 /// 
 public JTrie()
 {
     _root = new JTrieNode() { NodeKey = ' ' };
 }
コード例 #3
0
ファイル: JTrie.cs プロジェクト: jerry82/JData
 /// max search count can be specified via the constructure
 /// else, default value will be used
 public JTrie(int maxSearchCount)
 {
     _root = new JTrieNode() { NodeKey = ' ' };
     _maxSearchCount = maxSearchCount;
 }
コード例 #4
0
ファイル: JTrie.cs プロジェクト: jerry82/JData
        /// recursive method iterates through all the trie and return full word with 
        /// specified prefix 
        /// 
        private void GetMoreWords(JTrieNode cur, List<string> result, string prefix, int top)
        {
            if (cur.Children == null)
                return;

            foreach (JTrieNode node in cur.Children.Values)
            {
                string tmp = prefix + node.NodeKey;
                if (node.IsWord)
                {
                    if (result.Count >= top)
                        break;
                    else
                        result.Add(tmp);

                }
                GetMoreWords(node, result, tmp, top);
            }
        }