一片森林之Trie树(字典树)

版权声明:未经允许禁止转载。转载请联系我WX:yuyi5453。并且注明出处 https://blog.csdn.net/weixin_40532377/article/details/83003601

关于字典树的基础知识我就不多说了,网上的讲解已经很详细了

我就直接挂上模板,然后挂两道题目,实在是没大有时间写详细的教程,也懒得写了

模板题虽然代码量多点,但是一般比较好想。

还有一个想说的就是每个人都有自己的代码风格,只要自己写着顺手别人看得懂就行,不用强行去模仿

别人的代码风格(除非你写得真的烂)。

第一步:节点声明

struct Trie{
	int cnt;	//这个地方用来处理自己想要处理的操作
	Trie *next[maxn]; 
};

第二步:插入函数(插入字符串的函数)

Trie* init(Trie* p){    //创建一个新的节点
	p=new Trie;		//p=(Trie*)malloc(sizeof(Trie))
	p->cnt=0;
	for(int i=0;i<maxn;i++){
		p->next[i]=NULL;
		
	}
	return p;
}

void insert(Trie *root,char* s){    //插入字符串
	if(root==NULL||*s=='\0'){
		return ;
	}

	Trie *p=root;
	char* q=s;
	while(*q!='\0'){
		if(!p->next[*q-'a']){
			Trie* temp=init(temp);
			p->next[*q-'a']=temp;
		}
		p=p->next[*q-'a'];
		
		p->cnt++;
		q++;
	}
	
}

第三步:查找函数

void search(Trie *root,char* s){
    //需要什么操作每个问题都不一样需要自己去写了
}

放几道Trie树的题目(因为我发现关于Trie树的题目比其他的还是相对少),放在这个博客里面:https://blog.csdn.net/weixin_40532377/article/details/83003750

以后找到好的题目可以加进去。

猜你喜欢

转载自blog.csdn.net/weixin_40532377/article/details/83003601
今日推荐