二叉搜索树(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 中的中间大小的结点拎上去

(1)LL旋转,RR旋转

    

如上图:破坏者是在被破坏者的右孩子的右子树,所以属于RR插入,需要做RR旋转


        (LL旋转同理)

(2)LR旋转,LR旋转

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



猜你喜欢

转载自blog.csdn.net/qq_34645958/article/details/80722625