如何“平衡”三元搜索树?大多数tst实现都没有解决平衡问题,但建议以最佳顺序插入(我无法控制)。
答案 0 :(得分:6)
Dobbs博士关于Ternary Search Trees的文章说:D.D。 Sleator和R.E. Tarjan在“Self-Adjusting Binary Search Trees”(Journal of the ACM,1985年7月)中描述了三元搜索树的理论平衡算法。您可以使用自己喜欢的搜索引擎找到本文的在线版本。
答案 1 :(得分:2)
一个简单的优化方法就是将其变成一棵红黑树,这可以避免某些最坏的情况。 TST实际上只是二进制树,其中给定节点的值是另一个TST。因此,节点的“中间”子节点实际上并不是在每个级别都处于平衡状态的树的一部分,因为它无论如何都无法移至其他父节点。
这可以确保遍历trie的每一层,尽管考虑到每个节点上的子查询的大小甚至可以做得更好。但这看起来要复杂得多!
答案 2 :(得分:1)
二叉搜索树的概括是B-Tree,适用于2岁及以上任何地方的扇出。这不是唯一的方法,但它是一个常见的方法。
它的工作方式大致是插入或删除会使树失去平衡,它会从相邻节点窃取元素或空间。如果即使这还不足以保持树的平衡,它的高度将被改变以腾出空间。
答案 3 :(得分:1)
阅读这篇文章:
“使用条件旋转和随机启发式方法自我调整三元搜索尝试” 通过 “Ghada Hany Badr *和B. John Oommen†”
它将帮助您了解自我调整和平衡TST。