请帮我理解AVL树中的LR旋转

时间:2013-09-13 15:17:05

标签: data-structures rotation avl-tree

今天我正在研究数据结构中的AVL树,但却不了解LR和RL旋转。 LL和RR旋转非常直观且易于记忆,但在我看来,LR和RL旋转不遵循常识,所以我很难记住它们。这些轮换是应该塞满还是有任何方法可以理解它们?我正在阅读的书(数据结构由Seymoure Lipschutz撰写)说LR旋转是RR旋转后LL旋转的组合。但我无法连接它。这是该书中描绘的图片:

enter image description here

在第二张图片和最终图片之间发生了什么,请用这张图片说明。我想如果我理解LR那么自动将理解RL,因为两者都是镜像彼此。

1 个答案:

答案 0 :(得分:4)

你不理解它,因为它不正确,如图所示。它不是一个有效的二叉搜索树。 37不能是76的正确(更大)孩子,因为它更少。

初始插入

└── 44
    ├── (L) 30
    │   ├── (L) 16
    │   └── (R) 39
    │       └── (L) 37
    └── (R) 76

在(30)左旋后:(39)旋转到它的父亲[30]点,(39)的孩子[37]成为30岁的孩子。

└── 44
    ├── (L) 39
    │   └── (L) 30
    │       ├── (L) 16
    │       └── (R) 37
    └── (R) 76

在(39)右旋后:(39)位于树的顶部,(44)成为他的右孩。

└── 39
    ├── (L) 30
    │   ├── (L) 16
    │   └── (R) 37
    └── (R) 44
        └── (R) 76