Tree字典樹講解

2021-08-04 11:58:56 字數 1294 閱讀 9921

就像樹根一樣,每個點就是節點,也像乙個網狀鍊錶。

優點:對於字串可以減少無所謂的比較,效率很高。

多說無益,上例題:

ignatius最近遇到乙個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首).

input

輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行代表單詞表的結束.第二部分是一連串的提問,每行乙個提問,每個提問都是乙個字串.

注意:本題只有一組測試資料,處理到檔案結束.

output

對於每個提問,給出以該字串為字首的單詞的數量.

sample input

banana

band

beeabsolute

acmba

bband

abc

sample output

231

0

這是我寫的**,可能不太好
#includeusing namespace std;

struct tree //節點結構體

;tree* gettree() //獲取新節點函式,重點

return new;

}int main()

else

}} char question[30];

while (gets(question) != null)

else

}} return 0;

}

分析一下

對於每個單詞說,有多個單詞,就會向下延伸多少層,每個單詞占用乙個節點,所以結構體裡設定了next,對於著26個小寫字母,大概就是這個思想

上面的題目不用釋放也能過,但有些題目不行,那如何釋放呢?上**!

void freetree(tree*s)

if(s->next[i]!=null)

freetree(s->next[i]);

}}

s是乙個字典樹的入口。

思想;對於每個節點都掃瞄next陣列,檢測next【i】是否對應了有子節點,有就繼續呼叫自己往下走。掃完所有的next就可以使用free釋放這個節點了。

Trie樹(字典樹)講解

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

字典樹(講解 模版)

又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。字典樹與字典很相似,當你要查乙個單詞是不是...

zz 字典樹原理 字典樹(講解 模版)

怕以後還要用到 就先轉了 from 字典樹原理 trie樹就是字典樹,其核心思想就是空間換時間。舉個簡單的例子。給你100000個長度不超過10的單詞。對於每乙個單詞,我們要判斷他出沒出現過,如果出現了,第一次出現第幾個位置。這題當然可以用hash來,但是我要介紹的是trie樹。在某些方面它的用途更...