我正在开发一个Trie
数据结构,其中每个节点代表一个单词。所以单词st
,stack
和将被安排为stackoverflow
overflow
root
--st
---stack
-----stackoverflow
--overflow
我的 Trie 在HashTable
内部使用,因此所有节点查找都需要固定时间。以下是我想出的将项目插入特里树的算法。
- 检查 trie 中是否存在项目。如果存在,则返回,否则转到步骤2。
- 迭代中的每个字符
key
并检查单词是否存在。这样做直到我们得到一个可以将新值添加为子节点的节点。如果没有找到节点,它将被添加到根节点下。 - 插入后,重新排列插入新节点的节点的兄弟姐妹。这将遍历所有兄弟节点并与新插入的节点进行比较。如果任何节点以与新节点相同的字符开头,它将从那里移动并添加为新节点的子节点。
我不确定这是实现 trie 的正确方法。欢迎任何建议或改进。
使用语言:C++