trie樹的幾種實現 Hdu 1251 統計難題

2021-09-28 12:22:27 字數 1451 閱讀 5259

hdu 1251 統計難題

這是乙個比較基礎的字典樹的題,通過它展示普通trie樹和壓縮字典樹的實現。

普通trie樹

#include

#include

using

namespace std;

struct node

}r[500000];

struct trie

void

add(

char

*s)//r[now].isfinish = true;

}int

query

(char

*s)return r[now]

.cnt;}}

;char s[25]

;trie myt;

intmain()

while

(scanf

("%s"

, s)

!=eof

)return0;

}

可以用孩子兄弟節點表示法 或者 在node裡面用vector表示孩子節點,可以節約空間,但時間可能會受影響。

壓縮字典樹

#include

#include

using

namespace std;

struct node

;char list[

10000000

], s[20]

;//list每次新增加的字母的和

//按樣例的順序插入list的變化banana bananad bananadee bananadeeabsolute bananadeeabsoluteacm

node *t =

new node,

*tnode;

//t根節點

int len, sz;

//len當前輸入的字串長度,sz是list長度

void

clear

(node *p)

intsame

(node *p,

int st)

void

diliver

(node *

&p,int ll)

void

insert

(node *

&p,int st)}}

intquery

(node* p,

int st)

return p-

>cnt;

}int

main()

while

(scanf

("%s"

, s)

!=eof

)return0;

}

這種方法比普通的trie樹節約空間,並且在本題中速度更快。

Trie樹的實現

一 定義 trie,又稱字典樹,是一種用於快速檢索的二十六叉樹結構。典型的空間換時間 二 結構圖 三 原理 特別地 和二叉查詢樹不同,在trie樹中,每個結點上並非儲存乙個元素。四 性質 0 利用串的公共字首,節約記憶體 1 在trie樹上進行檢索總是始於根結點 2 根節點不包含字元,除根節點外的每...

Trie樹(字典樹)的實現

trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的...

Trie樹的C 實現

先給出lintcode的題目 實現trie樹 trie樹的一般性質如下 1.根節點不包含字元,除根節點外每乙個節點都只包含乙個字元。2.從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串。3.每個節點的所有子節點包含的字元都不相同。那麼既然是樹,既然需要和字串匹配,那麼樹的節點怎麼定義...