C語言 單詞查詢樹 Trie樹

2021-08-20 19:33:26 字數 2424 閱讀 3596

trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高。

對於下圖的trie樹, 總共有4個單詞,abc, ad, efa, ef

**實現

節點:

#define charlength 256

typedef struct trienode trienode, *trienodeptr, *triestptr;

插入乙個節點:

void insert(triestptr root, char *key) 

tmp = tmp->next[*(key + i)];

i++;

}tmp->isendofword = true;

}

搜尋乙個單詞:

int searchtrie(triestptr root, char *str)

else

return

false;

i++;

}if (tmp->isendofword == true)

else

}

刪除節點後返回路徑上最近的乙個鍵:

刪除節點,總共會有四種情況:

1. 字串超出範圍

2. 字串剛好結束,節點沒有子節點

3. 字串已經結束,節點存在字節點(count != 0)

(1) 節點是單詞的結尾(node->isendofword = true)

(2) 節點不是單詞的結尾(node->isendofword = false)

triestptr deletekey(triestptr root, char *key, int d) 

else

if(root->count == 0 && root->isendofword == false)

}else

}else

else

return root;}}

完整**:

#include 

#include

#include

#include

#include

#define length 4

#define wordlength 3

#define charlength 256

#define true 1

#define false 0

typedef

struct trienode trienode, *trienodeptr, *triestptr;

trienodeptr createtrienode(char key)

triestptr createtrie()

void insert(triestptr root, char *key)

tmp = tmp->next[*(key + i)];

i++;

}tmp->isendofword = true;

}void deletetrie(triestptr t)

}}int searchtrie(triestptr root, char *str)

else

return

false;

i++;

}if (tmp->isendofword == true)

else

}triestptr deletekey(triestptr root, char *key, int d)

else

if(root->count == 0 && root->isendofword == false)

}else

}else

else

return root;

}}void main() ;

triestptr root = createtrie();

for (int i = 0; i < length; i++)

deletekey(root, "ab",0);

printf("%d\n", searchtrie(root, "ape"));

deletetrie(root);

}

Trie樹(單詞查詢樹)

前言 tire樹,又稱之為字典樹或者單詞查詢樹。是一種樹形結構,是雜湊樹的變種。典型應用是用於統計 排序或儲存大量的字串 不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻的統計。因為相同的字串字首會共享同一條分支,所以優點是可以利用不同字串的相同字首來減少無謂的字串比較,查詢效率比hash表 has...

Trie 單詞查詢樹

l 簡介 trie 又稱單詞查詢樹 字首樹,是一種雜湊樹的變種。應用於字串的統計與排序,經常被搜尋引擎系統用於文字詞頻統計。含有單詞 tea tree a zsu 的一棵trie l性質 n根節點不包含字元,除根節點外的每乙個節點都只包含乙個字元。n從根節點到某一節點,路徑上經過的字元連線起來,為該...

Trie 單詞查詢樹

l 簡介 trie 又稱單詞查詢樹 字首樹,是一種雜湊樹的變種。應用於字串的統計與排序,經常被搜尋引擎系統用於文字詞頻統計。含有單詞 tea tree a zsu 的一棵trie l性質n 根節點不包含字元,除根節點外的每乙個節點都只包含乙個字元。n 從根節點到某一節點,路徑上經過的字元連線起來,為...