我可以使用每个节点上有一个完整单词的trie吗?

时间:2017-07-22 17:20:14

标签: algorithm tree graph-algorithm trie prefix-tree

我想实现一个trie来检查路径的有效性,所以我会建一个包含所有可能路径构造的树,通过目录分解它。因此/guest/friendsList/search之类的东西会从根节点传递到它的孩子guest,然后是访客的孩子friendsList,然后是朋友列表的孩子search。如果search是叶节点,则我的字符串/guest/friendsList/search将被视为有效。

这是一个特里有用的东西吗?我见过的所有尝试的实现都处理每个节点上的单个字母,但它们可以是整个字符串吗?这是一种特定于这种实现的特里,以及我只想做一个基本的树吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

你绝对可以这样做,虽然我通常称之为目录树而不是trie,因为你实际上是将文件系统建模为树结构,而不是存储大量不同字符串的前缀。事实上,操作系统可能在磁盘上有类似的数据结构来表示文件系统!

答案 1 :(得分:0)

目录树绝对可以做到这一点。首先创建根节点,然后将剩余的目录条目作为子节点添加到根节点,依此类推。因此,检查路径名是否有效只是解析整个字符串并通过目录树。

如果想要加快速度,可以使用字典存储节点级别,并在一个级别中搜索名称是线性的。因此,在目录树中搜索路径名称需要O(h),而h是目录树的高度。此外,为了防止冗余搜索,跟踪目录树的高度可以优化搜索时间;当解析的路径名的长度超过高度时,我们知道我们不需要搜索目录树。