ternery搜索树需要O(log(n)+ k)比较,其中n是字符串数,k是要搜索的字符串的长度,二元搜索树需要log(n)比较,那么为什么TST比BST?
答案 0 :(得分:0)
因为在三元情况下它是log 3 (n),其中在二进制情况下它是log 2 (n)。
答案 1 :(得分:0)
三元搜索树专门用于存储字符串,因此我们的分析需要考虑到存储的每个项目都是一个长度很长的字符串。让我们说数据结构中最长字符串的长度是L,并且总共有n个字符串。
您正确认为二进制搜索树在进行查找时仅进行O(log n)比较。但是,由于存储在树中的项目都是字符串,因此每次比较都需要时间O(L)才能完成。因此,在这种情况下使用二叉搜索树进行搜索的实际运行时间为O(L log n),因为存在O(log n)比较,每次比较花费O(L)时间。
现在,让我们考虑一个三元搜索树。使用标准的TST实现,对于要查找的输入字符串的每个字符,我们进行BST查找以查找要下降的树。这需要时间O(log n),我们对O(L log n)的总运行时间执行L次,与BST查找时间匹配。但是,您可以通过使用 weight-balanced trees 替换三元搜索树中的标准BST来实际改进,其重量由每个子树中的字符串数量给出,可以进行更仔细的分析用于显示查找的总运行时间为O(L + log n),这明显快于标准BST查找。
希望这有帮助!