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\)树的用途就是字符串的处理,以及维护最大异或和等。