Trie树学习(复习)笔记

\(Trie\)树一般用于词频统计或者前缀匹配,当然还有一些高级操作。

一棵空\(Trie\)仅包含一个根节点。

一般是设\(trie[pos][val]\),表示当前指针\(pos\)\(val\)指针。(一定注意\(val\)是值,而不是枚举的下标。)

插入时,枚举\(c\)字符,若指针\(pos\)\(val\)指针指向一个已经存在的节点\(p0\),则令\(pos=p0\)。若其指向空,则新建一个节点\(p0\),令\(pos\)\(val\)指向\(Q\),然后令\(pos=p0\)。注意到最开始\(pos=1\),意思是\(pos\)指向空的根节点\(1\)

时间复杂度:一般的\(Trie\)树插入是\(O(|S|)\)的,构造是\(O(\sum{|S|})\)的。

空间复杂度:一般的\(Trie\)树空间复杂度是比较大的,\(pos\)维要开到\(\sum{|S|}\)(因为可能没有公共前缀),\(val\)维要开到值域。

目前主要学的\(Trie\)树的用途就是字符串的处理,以及维护最大异或和等。

posted @ 2020-10-22 21:51  andysj  阅读(81)  评论(0编辑  收藏  举报