/** 插入就是根据key字符层层递进下去直到key结尾,此时把value更新到节点的* 数据域*/intgt_trie_insert(GtTrie*trie,char*key,GtTrieValuevalue){if(!value)returnGT_ERROR_EMPTY;char*p=key;unsignedintc;GtTrieNode**rover=&trie->root;//查查是否已经存在这个节点GtTrieNode*node=gt_trie_node_find(trie...
如有侵权,请联系 cloudcommunity@tencent.com 删除。
node)=>void,// 查找单词search:(queryData)=>boolean,searchNext:(node,stringData)=>boolean,// 递归// 删除单词delete:(stringData)=>this,delNext:(parent,index,stringData,delStr)=>boolean,// 递归// 打印树上的所有单词printData:()=>void,printHelper:(node,data)=>void// 递归}...
由于搜索的顺序和删的顺序其实是相反的,因此递归是不错的选择。删无非2种情况,需要删除本节点,和保留本节点给其他字符串,所以递归还是需要一个返回值的。复杂度还是O(n)。 publicstaticvoidremove(Stringword,TrieNoderoot){removeHelper(word,root,0);}privatestaticbooleanremoveHelper(Stringword,TrieNodenode,intid...