今天我正在研究数据结构中的AVL树,但却不了解LR和RL旋转。 LL和RR旋转非常直观且易于记忆,但在我看来,LR和RL旋转不遵循常识,所以我很难记住它们。这些轮换是应该塞满还是有任何方法可以理解它们?我正在阅读的书(数据结构由Seymoure Lipschutz撰写)说LR旋转是RR旋转后LL旋转的组合。但我无法连接它。这是该书中描绘的图片:
在第二张图片和最终图片之间发生了什么,请用这张图片说明。我想如果我理解LR那么自动将理解RL,因为两者都是镜像彼此。
答案 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