trie樹,又稱為字典樹,是一種樹形結構,是一種雜湊樹的變種,是一種用於快速檢索的多叉樹資料結構。
用於儲存大量的字串。它的優點是:利用字串的公共字首來節約儲存空間。
trie的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的開銷以達到提高效率的目的。
它有3個基本性質:
1、根節點不包含字元,除根節點外每乙個節點都只包含乙個字元。
2、從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串。
3、每個節點的所有子節點包含的字元都不相同。
搜尋字典專案的方法為:
(1) 從根結點開始一次搜尋;
(4) 迭代過程……
/*
功能描述:實現trie樹的建立、插入、查詢
說明: 對統計物件,要求符合正則"[a-z]*"的格式的單詞
若考慮大寫,標點和空白字元(空格.tab.回車換行符),
可修改next陣列大小,最多255可包含所有字元
*/#include#include #include#define max_child 26 //此函式只考慮26個英文本母的情況
typedef struct tree
node,*trie_node;
/*child是表示每層有多少種類的數,如果只是小寫字母,則26即可,若改為大小寫字母,則是52,若再加上數字,
則是62了,這裡根據題意來確定。
count可以表示乙個字典樹到此有多少相同字首的數目,這裡根據需要應當學會自由變化。
*/node* createtrie() //建立trie節點樹
void insert_node(trie_node root,char *str) //trie樹插入結點
t=t->child[*str-'a'];
str++;
}t->count++;
}void search_str(trie_node root,char *str) //查詢串是否在該trie樹中
node *t=root;
while(*str!='\0')
else
break;
}if(*str=='\0')
else
printf("該字串不在trie樹中\n");
}void del(trie_node root) //釋放整個字典樹佔的堆空間
free(root);
}int main()
printf("trie樹已建立完成\n");
printf("請輸入要查詢的字串:\n");
while(scanf("%s",str)!=null)
return 0;
}
字典樹 字首樹 簡單實現
又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高。查詢 插入 刪除 此段 沒有實現刪除 在每...
字典樹(trie樹)的指標簡單實現pascal
問題1 給你乙個單詞集合,支援新增,刪除,詢問某個單詞出現次數。const maxword 100 maxn 100 type dictree rec rec record next array 1.maxword of dictree val boolean cnt longint end var...
trie樹 字典樹 介紹及簡單實現
第一次接觸trie樹,翻了一些演算法樹竟然沒有找到。於是在google上各種查詢,現在對自己所了解的trie總結一下,以便將來複習,並給出簡單的實現。trie,又稱字典樹 單詞查詢樹,是一種樹形結構,用於儲存大量的字串。它的優點是 利用字串的公共字首來節約儲存空間。相對來說,trie樹是一種比較簡單...