字典树(二维数组)

  • Post author:
  • Post category:其他


字典树的递归感觉和kmp的next数组有点像。

就我而言,字典树难理解不是对树的疑问,而是对数组里面该填什么数字感到疑惑(我很菜,想了好久才迷糊过来)。

例如:

3
abc
abd
bcd

U数组(i从0开始)

输入abc时

第一行 1 0 0 0 …

第二行 0 2 0 0 …

第三行 0 0 3 0…

输入abd时

第一行 1 0 0 0…

第二行 0 2 0 0…

第三行 0 0 3 4…

输入bcd时

第一行 1 0 0 5…

第二行 0 2 0 0

第三行0 0 3 4

第四行 0 0 0 0

第五行 0 0 0 0

第六行 0 0 6 0

第七行 0 0 0 7

自己手磨时每一行加上 i 的值

可能会好理解

	int n;int idx=1;
	cin>>n;
	while(n--)
	{
		int j=0;
		cin>>C+1;
		int len=strlen(C+1);
		for(int i=1;i<=len;i++)
		{
			int x=C[i]-'a'+1;
			if(U[j][x]==0)
			{
				U[j][x]=idx;
				idx++;
			}
			j=U[j][x];
		}
		V[j]=1;//如果是单词,加上单词结尾的判断
	}



版权声明:本文为m0_73843712原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。