二叉搜索树(BST)和平衡二叉树(ALV)

一.二叉搜索树(Binary Search Tree)

二叉搜索树:一棵二叉树,可以为空,如果不为空,满足以下性质:

    1.非空左子树所有的键值小于其根节点的键值

    2.非空右子树所有键值都大于其根节点的键值

   3.左右子树都是二叉搜索树

二.平衡二叉树(AVL树)

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

2.平衡因子(Balance Factor ,简称BF):BF(T) = hL -hR(左子树高度-右子树高度)

3.平衡二叉树:空树或者任一结点左右子树高度差的绝对值不超过1,即|BF(T)|<=1

4.高度为h的平衡二叉树的最小结点数:n(h) = n(h-1)+n(h-2)+1

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

6.平衡二叉树的调整

    关键:找到不平衡的”被破坏者”和“破坏者”,观察被破坏者和破坏者的关系从而做对应的旋转,旋转的方法就是把被破坏者和破坏者之间的结点(不包括破坏者)如下图的5,10,14 中的中间大小的结点拎上去

    四种不平衡情况:LL RR LR RL

(1)左旋转,右旋转

    

《二叉搜索树(BST)和平衡二叉树(ALV)》

《二叉搜索树(BST)和平衡二叉树(ALV)》

        (LL旋转同理)

(2)左右旋转,右左旋转

破坏者(mar)是在被破坏者(may)的左子树的右子树上,所以需要做LR旋转

《二叉搜索树(BST)和平衡二叉树(ALV)》

《二叉搜索树(BST)和平衡二叉树(ALV)》

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