我是小脆皮, 今天写一个字典树的博文~~~
字典树,就是n叉树。因为26个英文字母所以我这里就取26个叉了。
介绍完了。。。我也惊讶与我的辞藻这么不华丽。。。。
二叉树我们都知道, 不知道的狠狠的撞向豆腐~ 字典树不过就多了几个叉!
他的数据结构定义如下:
typedef struct node
{
int nFlag; //标记到此是否有单词
char* pStr; //如果nFlag = 1, 此处则有单词释义
struct node *pList[26]; //26个指针, 代表 a~z
}TrieTree;
添加单词“abz”,释义为“12345”;
1. 先来一个根节点(设为节点1), 找到 ‘a’ 指针, ‘a’ 指针指向节点2
2. 节点2的’b’指针指向节点3
3. 节点3的’z’指针,指向节点4
4. 能指向节点4说明有 abz这三个指针指向来的。即单词‘’abz‘’;
5. 节点4的标志位nFlag 置1,表示有单词, 释义pStr = “12345”,他的26个指针为NULL;
6. 如果,要添加单词”ab”, 那么就把节点3的 nFlag 置1,并添加 释义pStr ;
图片助攻:
跟着代码走2遍:
//结构体定义
typedef