AVL / Red-black Trees是否可以将规则扩展到任何不平衡的树状态?

时间:2017-10-05 11:37:05

标签: binary-tree avl-tree red-black-tree tree-balancing

我想知道AVL-treeRed-black-tree平衡方法(通过简单旋转在每个节点插入时发生)是否可以在二叉树构造的任何阶段扩展到任何给定的二叉树。< / p>

我发现对于任何给定的不平衡二叉树,遵循AVL或红黑旋转规则会导致绑定情况,您可以选择至少两种方式来平衡树。如果您遵循AVL规则,您将获得相同的级别差异,这意味着您可以选择至少两个节点来平衡树。

显然,你为平衡做出的任何决定都会产生一个不同的平衡树(也许一个树在与另一个树的水平差异方面有更好的情况)。我在一个简单的例子中测试了这个程序,我不确定它是否适用于所有情况,所以我想知道:

  1. 如果可以推广
  2. 如果有一个证明它无法推广的例子吗?
  3. 为什么要考虑这种情况?

    1. 知道这很有趣!
    2. 假设二叉树数据结构(并且您不想使用AVL或红黑)。所以你不想一直保持平衡,但有时你可能想要在树的构建过程中保持平衡。
    3. 一个简单的例子:

      • 假设我们的元素由{1,3,5,7}
      • 组成
      • RR:向右旋转
      • RL:向左转动

      给定的二叉树看起来像这样:
      enter image description here


      如果你平衡它与RR(枢轴5)然后RL(枢轴3)它将如下(如果从开始使用AVL方法,相同的树):
      enter image description here


      如果你用LL(枢轴5)平衡它:
      enter image description here

0 个答案:

没有答案