三叉搜尋樹

2022-03-21 01:58:00 字數 552 閱讀 2876

三叉搜尋樹是用來解決字典樹的記憶體問題的資料結構。為了避免不需要的節點的記憶體占用,每個字典樹節點不再使用陣列,而是使用「樹中有樹」的結構。在三叉搜尋樹中,字典樹節點的每個非空指標得到它自己。

例如,有四個單詞,ab、abba、abcd和bcd,它的三叉搜尋樹結構如下: 

三叉搜尋樹包括三種箭頭。第一種,向下的虛線箭頭。遍歷這種箭頭,就能得到相匹配的單詞。第二種,左右箭頭。當當前位置字元不滿足需要時,遍歷這種箭頭。當當前位置字元小於需求時,遍歷右箭頭;反之,左箭頭。

例如, 

綠色箭頭展示了如何確認三叉搜尋樹是否包含單詞abba: 

下面這幅圖展示如何發現三叉搜尋樹不包含單詞abd: 

從bintree Trie 到三叉搜尋樹

最近在 程式設計師 雜誌上看到乙個.net大牛寫一篇 用三叉搜尋樹實現高效率的 自動完成 的文章,感覺這種方法確實不錯。對於字串的高效處理一般都是用字典樹 trie。雖然執行也是非常快,但是用這種資料結構需要消耗非常多的記憶體。trie是一種形似樹的資料結構,它的每個節點都包含乙個指標陣列,其中每乙...

求三叉樹高度

有12345個結點的滿3叉數的高度為 寫出計算過程 1 層 1 節點數 1 2 3 4 層 2 節點數 3 5 6 7 8 9 10 11 12 13 層 3 節點數 9 滿三叉樹每層節點數目 假設k 1層有n個節點 那麼第k層就應該有3n個節點。也就是說這是乙個首項是1,公比是3的等比數列。第n層...

Trie三叉樹分詞實現

最長匹配中文詞典分詞演算法 中文的語句與英文不同,英文單詞之間均有空格隔開,英文的語句沒有分詞的概念。而中文則不同,單詞之間沒有空格隔開。在處理中文語句時需要對中文語句進行分詞。目前多數的中文分詞的演算法採用了,最長匹配詞典的演算法。詞典是將眾多的中文片語存放在乙個檔案內。如下的詞典的格式 大 大學...