前缀树是N叉树的一种形式,常用于存储字符串,树中每一个节点表示一个字符。
前缀树重要的存在价值是搜索速度,典型的利用空间换时间,时间复杂度为O(n),n是树的深度。
上图中存储了四个单词:am、bad、be、so,位于叶子节点,叶子节点一定为词,但词不一定位于叶子节点。除了存储词的节点外,其余节点称为前缀。如ba,在树中并不是一个词,但他是bad词的前缀,前缀的重要作用就是减少存储空间,具有相同前缀的不同单词,只需存储差异部分,大大减少了空间的存储。
我所喜欢的数据结构:
Trie常见的操作:
这个题目实在是翻译不出来啊!题意:插入多个单词(apple、app)给每一个词赋值apple=3、app=2,当输入前缀ap时,返回以ap为前缀的所有单词值的和。
一段文字内替换所有以
Trie中存储的单词
的单词
步骤:
步骤:
在给定的数组中两两项异或,找出最大的异或值。
一个数的大小如何判断?从高位向低位走,先遇到不为0的数最大(1000 、0100),若高位相同继续向低位走(1000 、 1100)。
思路:
由于存储的节点只有0、1所以修改TrieNode结构
构造Trie
遍历查找最大异或值
给定矩阵,判断输入的单词是否在矩阵中。
思路:
在给出的单词组中,找出可以组成回文的两个单词组。
LeetCode