数据结构 平衡二叉树

搜索树节点的不同插入次序, 将导致不同的深度和平均查找长度ASL

《数据结构 平衡二叉树》

AVL平均查找次数:

avl(a) = (1 + 2×2 + 3×3 + 4×3 +5×2 + 6×1);  //平均查找长度


平衡树的概念:

平衡因子: BF(T) = 左子树的高度 – 右子树的高度

空树 或者左右两边的高度差绝对值不超过1

《数据结构 平衡二叉树》

比如这棵树 假设7为第0层 则左边的高度为3 右边的高度为1 高度差为 |3-1| = 2

设nh是高度为h的平衡二叉树的最小节点数


设nh是高度为h的平衡二叉树的最小节点数

给定节点数为n的AVL二叉树的最大高度为O(log2n)

平衡二叉树的调整:

《数据结构 平衡二叉树》

如上图,在插入一个新的节点后 二叉树不平横了 此时通过旋转操作 使二叉树重新恢复平衡

不平衡的”发现者”是Mar, “麻烦节点”Nov在发现者右子树的右边

因而叫RR操作

二叉树原本是平衡的 插入一个新元素后平衡被破坏了 此时需要旋转来调整

因为是右子树上的插入 因此右旋转

例子: RR旋转

《数据结构 平衡二叉树》

如上图: 原本二叉树是平衡的 在插入一个新元素15后 平衡被破坏

被破坏者是:5   破坏者是15

因此对5的右子树10进行旋转 旋转后效果如右图

(注:破坏者插在14的左右两边都可以进行旋转)


例子:LL旋转

《数据结构 平衡二叉树》

如上图:出现了两个被破环者 此时选择最下方的被破坏者 Mar

 对其进行左旋转 效果如右图






    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/alex1997222/article/details/78292288
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞