字典樹的建立以及搜尋

2021-10-19 02:42:19 字數 1917 閱讀 5068

1、字典樹的節點儲存是單詞的字元(字母)

2、為了表示乙個單詞是否出現,我們可以給單詞的最後的字元加上標記

3、字典樹中表示乙個單詞用的是一條鏈

4、字典樹的跟節點沒有什麼意義

1、把單詞插入到字典裡面

2、在字典樹中查詢單詞

建樹演算法過程

去根節點下面找這個單詞的第乙個字元是否出現

如果沒出現就建立新的字元節點,字串中移除當前字元,再往下走

如果出現了,字串中移除當前字元,就直接往下走

在單詞找完後,在最後節點做標記,多次建立標記遞增

function

trienode

(val)

function

insert

(root, str)

// 遞迴 傳入當前樹節點以及剩餘節點

insert

(root.children[str[0]

], str.

slice(1

))}else

}// 建立根節點

let root =

newtrienode(''

)//往根節點插入節點

insert

(root,

'and'

)insert

(root,

'any'

)insert

(root,

'about'

)insert

(root,

'any'

)insert

(root,

'dr'

)insert

(root,

'drive'

)insert

(root,

'driver'

)insert

(root,

'doctor'

)insert

(root,

'end'

)insert

(root,

'egg'

)insert

(root,

'egg'

) console.

log(root)

圖示建樹過程

圖示建樹結果

字典樹查詢演算法過程

去根節點下面找這個單詞的第乙個字元是否出現

如果沒出現直接返回false

如果出現了,就直接往下找

在單詞找完後,如果標記大於1,表示單詞出現過,返回true

否則返回false

// 查詢

function

find

(root, str)

else

}else

} console.

log(

find

(root,

'and'))

console.

log(

find

(root,

'abo'))

console.

log(

find

(root,

'eggs'))

console.

log(

find

(root,

'egg'

))

查詢過程

查詢結果

字典樹與模糊搜尋

字典樹是一種儲存字串的樹形結構,假設有如下場景,給出一堆字串,然後讓你求出以某個字串為字首的字串的個數 比如給你abcd,abce,然後讓你求以abc為字首的字串的個數 如下 include include using namespace std typedef struct node node,p...

字典樹的C 實現以及應用

trie,字典樹,又稱單詞查詢樹 字首樹,是一種雜湊樹的變種。應用於字串的統計與排序,經常被搜尋引擎系統用於文字詞頻統計。後續再補充 參見 include using namespace std define max 26 typedef struct node node node createne...

利用多叉樹(字典樹)實現簡單的快速搜尋

看到題目第一時間想到樹,而且是多叉樹。為什麼呢?然後我們換個想法,我們可以先把單詞按照字母為單位分割,然後第1個字母在樹的第一層搜尋,若不存在該字母則新增該字母為本層的兄弟節點,存在該字母就選擇第2個字母,跳到下一層的首節點,再逐個搜尋,若不存在該字母則新增該字母為本層的兄弟節點,存在該字母就選擇第...