Ejemplo n.º 1
0
Archivo: trie.c Proyecto: starsep/Trie
void initTrie(bool v){
	vOption = v;
	words = NULL;
	endOfWord = NULL;
	root = NULL;
	clearTrie();
}
Ejemplo n.º 2
0
Archivo: trie.c Proyecto: starsep/Trie
void deleteTrie(void){
	clearTrie();
	free(words);
	free(endOfWord);
	reservedWords = 0;
	numberOfWords = 0;
}
Ejemplo n.º 3
0
void clearTrie(Trie *p)//清空整棵字典树
{
	if(p)
	{
		for(int i = 0; i < 26; i++)
			clearTrie(p->next[i]);
		delete p;
	}
}
Ejemplo n.º 4
0
 void clearTrie(TrieNode *&root) {
     if (root == NULL) {
         return;
     }
     int i;
     for (i = 0; i < TrieNode::N; ++i) {
         clearTrie(root->child[i]);
     }
     root->child.clear();
     delete root;
     root = NULL;
 }
Ejemplo n.º 5
0
Archivo: trie.c Proyecto: starsep/Trie
//jeżeli należy to usuwa node'a
void deleteNode(Node *node){
	assert(node != NULL);
	if(node->numberOfWord != NO_END_OF_WORD)
		endOfWord[node->numberOfWord] = NULL;
	node->numberOfWord = NO_END_OF_WORD;
	if(node->numberOfSons == 0)
		removeLeaf(node);
	else if(node->numberOfSons == 1)
		joinFatherWithOnlySon(node);
	if(numberOfNodes < 2)
		clearTrie();
}
Ejemplo n.º 6
0
 /**
  * @param board: A list of lists of character
  * @param words: A list of string
  * @return: A list of string
  */
 vector<string> wordSearchII(vector<vector<char> > &board, vector<string> &words) {
     v.clear();
     us.clear();
     ans.clear();
     
     vector<vector<char> > &b = board;
     n = b.size();
     m = n ? b[0].size() : 0;
     if (!(n || m)) {
         return ans;
     }
     
     TrieNode *root = new TrieNode();
     for (auto it = words.begin(); it != words.end(); ++it) {
         insertWord(root, *it);
     }
     
     string s = "";
     v.resize(n, vector<bool>(m, false));
     int i, j;
     for (i = 0; i < n; ++i) {
         for (j = 0; j < m; ++j) {
             v[i][j] = true;
             s.push_back(b[i][j]);
             DFS(i, j, s, root->child[b[i][j] - 'a'], b);
             s.pop_back();
             v[i][j] = false;
         }
     }
     
     for (auto it = us.begin(); it != us.end(); ++it) {
         ans.push_back(*it);
     }
     clearTrie(root);
     return ans;
 }
Ejemplo n.º 7
0
void initTrie()
{
    clearTrie(root);
    root = new root;
}