我知道我们可以使用DSW算法或红黑平衡树预处理并将任何二叉搜索树转换为完美的二叉树。
这两种方法如何区分时间复杂度?
您是否可以为每个示例/应用程序提供一些示例/应用程序,以显示使用一种方法而不是另一种方法的好处。
答案 0 :(得分:1)
DSW是静态算法 - 你使用它一次,你希望树永远不会改变。花费O(N)时间使树完全平衡,然后您可以使用它,但预计不会修改它。你仍然可以做到这一点,但完全平衡的属性将会丢失。你执行的修改操作越多,树的执行就越差。
红黑树是一种动态数据结构。它在O(log(N))中执行其基本操作,但当然不会像完美平衡的树那样好。最重要的是可以在飞行中修改红黑树,并且仍然需要O(log(N))来进行操作。
因此这两种方法的用例不同。希望这会有所帮助。
答案 1 :(得分:0)
当您想要创建整个BST(不平衡)然后执行大量查找(在后平衡BST上)时,DSW非常有用。当你有交织的添加/删除/查找时,RB树很有用。
RB树主要是平衡,但DSW是一个完整的二叉树(可能是最后一级)。
两者都提供O(log n),但DSW是可以分摊的一次性操作。