数据结构与算法第五章查找课稿.ppt

非AVL树的平衡化处理 每插入一个新节点时,AVL树中相关节点的平衡状态会发生改变。 因此,在插入一个新节点后,需要从插入位置沿通向根的路径回溯,检查各节点的平衡因子(左、右子树的高度差); 如果在某一节点发现高度不平衡,停止回溯; 从发生不平衡的节点起,沿刚才回溯的路径取直接下两层的节点,做平衡化旋转。 平衡化旋转 平衡化旋转有两类: 单旋转(LL旋转和LR旋转) 双旋转(LR旋转和RL旋转) 如果这三个节点处于一条直线上,则采用单旋转进行平衡化。 如果这三个节点处于一条折线上,则采用双旋转进行平衡化。 LL旋转 RR旋转 LR双旋转 RL双旋转 4 3 2 2 3 4 20 15 18 60 70 65 平衡化旋转 若在 C 的左子树的左子树上插入 结点,使 C 的平衡因子从 1 增加 至 2, 需要进行一次顺时针旋转。 (以 B 为旋转轴) 若在 A 的右子树的右子树上插入 结点,使 A 的平衡因子从 -1 改变 为 -2,需要进行一次逆时针旋转。(以 B 为旋转轴) 2) RR 平衡旋转: 1) LL 平衡旋转: * A C C B C A B A 平衡化旋转 若在 A 的右子树的左子树上插入 结点,使 A 的平衡因子从 -1 改变 为 -2,需要先进行顺时针旋转,再逆时针旋转。(以插入的结点 B 为旋转轴) 4

文档评论(0)

1亿VIP精品文档

相关文档