Algorithm 完美二叉树:DSW和RB平衡树

Algorithm 完美二叉树:DSW和RB平衡树,algorithm,binary-tree,time-complexity,red-black-tree,Algorithm,Binary Tree,Time Complexity,Red Black Tree,我知道我们可以使用DSW算法或红黑平衡树对任何二叉搜索树进行预处理,并将其转化为完美的二叉树 这两种方法在时间复杂度方面有什么不同 您能否为每种方法提供一些示例/应用程序,说明使用一种方法而不是另一种方法的好处。DSW在您希望创建整个BST(不平衡)然后执行大量查找(在平衡后的BST上)时非常有用。当添加/删除/查找所有发生的事情时,RB树非常有用 RB树基本上是平衡的,但DSW是一个完整的二叉树(除了最后一级) 两者都提供O(对数n),但DSW是一次性操作,可以摊销。DSW在创建整个BST(不

我知道我们可以使用DSW算法或红黑平衡树对任何二叉搜索树进行预处理,并将其转化为完美的二叉树

这两种方法在时间复杂度方面有什么不同


您能否为每种方法提供一些示例/应用程序,说明使用一种方法而不是另一种方法的好处。

DSW在您希望创建整个BST(不平衡)然后执行大量查找(在平衡后的BST上)时非常有用。当添加/删除/查找所有发生的事情时,RB树非常有用

RB树基本上是平衡的,但DSW是一个完整的二叉树(除了最后一级)


两者都提供O(对数n),但DSW是一次性操作,可以摊销。

DSW在创建整个BST(不平衡)然后执行大量查找(在平衡后的BST上)时非常有用。当添加/删除/查找所有发生的事情时,RB树非常有用

RB树基本上是平衡的,但DSW是一个完整的二叉树(除了最后一级)


两者都提供O(logn),但DSW是一次性操作,可以摊销。

DSW是静态算法-您使用它一次,您希望树永远不会改变。使一棵树完全平衡需要O(N)个时间,然后你可以使用它,但不要修改它。你仍然可以这样做,但是完美平衡的特性将会丢失。修改操作越多,树的性能就越差

红黑树是一种动态的数据结构。它在O(log(N))中执行其基本操作,但其性能当然不如完全平衡树。最重要的是红黑树可能会在飞行中被修改,并且仍然需要O(log(N))来进行操作


因此,这两种方法的用例不同。希望这能有所帮助。

DSW是一种静态算法,您只需使用一次,就可以期待树永远不会改变。使一棵树完全平衡需要O(N)个时间,然后你可以使用它,但不要修改它。你仍然可以这样做,但是完美平衡的特性将会丢失。修改操作越多,树的性能就越差

红黑树是一种动态的数据结构。它在O(log(N))中执行其基本操作,但其性能当然不如完全平衡树。最重要的是红黑树可能会在飞行中被修改,并且仍然需要O(log(N))来进行操作


因此,这两种方法的用例不同。希望这能有所帮助。

执行DSW后的复杂性不会被摊销,执行DSW需要O(log(N)*N)。一旦你有了一个完全平衡的树,所有的操作都需要O(log(N))。也请看一下我的回答。一旦你执行DSW,复杂性就不会被摊销,执行DSW需要O(log(N)*N)。一旦你有了一个完全平衡的树,所有的操作都需要O(log(N))。请看一下我的回答一个小的修正:DSW算法的时间复杂度是O(N)。第二阶段的运行时间是N+N/2+N/4+@汉斯,你当然是对的,谢谢。更正。我不知道我当时在想什么…一个小小的修正:DSW算法的时间复杂度是O(N)。第二阶段的运行时间是N+N/2+N/4+@汉斯,你当然是对的,谢谢。更正。我不知道我当时在想什么。。。