字尾樹的實現

2021-10-06 10:28:18 字數 691 閱讀 6737

第一次遇到字尾樹這種資料結構,所以就去理解了一下,感覺原理不難懂,但是相比於字首樹,字尾樹的**實現還是有點麻煩。

字尾樹常用於在母串s中查詢子串p是否存在,並查詢子串在母串中開始的位置

它的思路就是對於每個字尾樹結點,都有乙個map和vector

給乙個例子:

//字尾樹的實現

class

suffixtreenode

else

//否則,建立新的子結點,並存入map

child-

>

insertstring

(s.substr(1

), index)

;//遞迴插入

} vector<

int>

getindexes

(string s)

else;}

}~suffixtreenode()

}};class

suffixtree

} vector<

int>

getindexes

(string s)

~suffixtree()

};intmain()

字尾樹簡短實現

也沒什麼好講的,背下來也沒什麼問題。不過理解更好吧。對應洛谷字尾自動機的模板題 雖然字尾樹很強,但是請注意 常數還是有的 而且比較大。估計是唯一不如字尾自動機的地方 節點數很難超過1.5 n,考場上可以試試卡卡空間什麼的 include include define sid 2000500 defi...

字尾樹的實現形式

高階資料結構 上述字尾樹t是根據字串s的所有字尾構建的。有時候這個s可以是要給字串集合,所以字尾樹t是根據所欲字串的字尾構建的。這種字尾樹也叫做廣義字尾樹。一種很自然的構建方式可以給每個字串加兩兩不同的結尾符,這些結尾符沒有在任何字串 現過。然後,我們將這些新增了結尾符的字串首尾相接作為乙個整體來構...

字尾樹 字尾陣列

在字串處理當中,字尾樹和字尾陣列都是非常有力的工具,其中字尾樹大家了解得比較多,關於字尾陣列則很少見於國內的資料。其實字尾陣列是字尾樹的乙個非 常精巧的替代品,它比字尾樹容易程式設計實現,能夠實現字尾樹的很多功能而時間複雜度也不太遜色,並且,它比字尾樹所占用的空間小很多。可以說,在資訊學競賽 中字尾...