【问题标题】:AVL Tree Rotation'sAVL 树旋转的
【发布时间】:2015-11-12 19:05:42
【问题描述】:

关于 avl 树的简单问题。 如果我有这棵树:

    27
   /  \
  9    50
 / \
2   15
      \
       21

为什么要平衡这个答案?:

    15
   /  \
  9    27
 /    /  \
2    21   50

取而代之的是(或者它们都有效?):

    21
   /  \
  15   27
 /  \    \
2    9    50

【问题讨论】:

  • 第二个是不是不小心把9和15互换了?因为它不是一个有效的搜索树。但它仍然是平衡的。

标签: tree avl-tree


【解决方案1】:

根据 AVL 树的回溯算法,平衡分两步完成:

我。 left rotation 为左子树完成:

  |              |
  9              15
 / \            /  \
2   15   =>    9    21
     \        /
      21     2

二。 right rotation 为整棵树完成:

      27           15
     /  \         /  \
    15   50 =>   9    27
   /  \         /    /  \
  9    21      2    21   50
 /
2

第二个答案完全不正确,因为它没有保留元素的顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    相关资源
    最近更新 更多