我想实现一个trie来检查路径的有效性,所以我会建一个包含所有可能路径构造的树,通过目录分解它。因此/guest/friendsList/search
之类的东西会从根节点传递到它的孩子guest
,然后是访客的孩子friendsList
,然后是朋友列表的孩子search
。如果search是叶节点,则我的字符串/guest/friendsList/search
将被视为有效。
这是一个特里有用的东西吗?我见过的所有尝试的实现都处理每个节点上的单个字母,但它们可以是整个字符串吗?这是一种特定于这种实现的特里,以及我只想做一个基本的树吗?
谢谢!
答案 0 :(得分:1)
你绝对可以这样做,虽然我通常称之为目录树而不是trie,因为你实际上是将文件系统建模为树结构,而不是存储大量不同字符串的前缀。事实上,操作系统可能在磁盘上有类似的数据结构来表示文件系统!
答案 1 :(得分:0)
目录树绝对可以做到这一点。首先创建根节点,然后将剩余的目录条目作为子节点添加到根节点,依此类推。因此,检查路径名是否有效只是解析整个字符串并通过目录树。
如果想要加快速度,可以使用字典存储节点级别,并在一个级别中搜索名称是线性的。因此,在目录树中搜索路径名称需要O(h),而h是目录树的高度。此外,为了防止冗余搜索,跟踪目录树的高度可以优化搜索时间;当解析的路径名的长度超过高度时,我们知道我们不需要搜索目录树。