2010年第4题
在右图所示的平衡二叉树中,插入关键字 48 后得到一棵新平衡二叉树。在新平衡二叉树中,关键字 37 所在结点的左、右子结点中保存的关键字分别是( )
A. 13,48 \qquad B. 24,48 \qquad C. 24,53 \qquad D. 24,90
解析
本题主要考查平衡二叉树的插入和调平衡操作。
-
平衡二叉树(AVL 树)的定义和性质:
- 平衡二叉树或者是空树,或者是具有如下特征的二叉排序树:① 左子树和右子树的深度之差的绝对值不超过 1;② 左子树和右子树也是平衡二叉树(因由前苏联数学家 Adelson-Velskii 和 Landis 提出,所以又称 AVL 树)。
- 二叉树上结点的平衡因子(Balance Factor,BF):该结点左子树和右子树的深度之差。
- 平衡二叉树上所有结点的平衡因子只可能是 -1、0 和 1。
-
AVL 树的平衡调整:
-
基本方法:找到离插入结点最近且平衡因子绝对值超过 1 的祖先结点,以该结点为根的子树称为最小不平衡子树,可将重新平衡的范围局限于这个子树。
-
根据基本方法,演化出以下类型:
- 右旋(RR 旋转):用于左子树过高(平衡因子 > 1)且左子树的左子树过高的情况(LL 型)。
- 左旋(LL 旋转):用于右子树过高(平衡因子 < -1)且右子树的右子树过高的情况(RR 型)。
- 左右旋(LR 旋转):先左旋后右旋,用于左子树过高且左子树的右子树过高的情况(LR 型)。
- 右左旋(RL 旋转):先右旋后左旋,用于右子树过高且右子树的左子树过高的情况(RL 型)。
-
按照题目要求,将关键字 48 插入到题目中图示的平衡二叉树中:
- 48 > 24,则插入到右子树;
- 48 < 53,则插入到 53 的左子树;
- 48 > 37,则插入到 37 的右子树。
最终得到如下图所示结果,并且在图示中标明此时每个结点的平衡因子。
从上图可知,结点 24 的平衡因子是 -2 ,是距离插入结点 48 最近的祖先结点,因此,以 24 到 为根的树构成了一棵最小不平衡子树,调平衡的范围就限制在此子树范围。
观察后可知,由于插入 48 后导致不平衡,故可将 37 上升为根结点,而后得到如下图所示调平衡后的一棵平衡二叉树。
由上图结果可知,37 的左右子结点分别是 24、53
本题答案:C