平衡二叉树AVL描述

平衡二叉树就是一颗排序二叉树,只不过比排序二叉树又多了一个条件,那就是每一个结点的左子树的高和右子树的高的差的绝对值(bf值)不能超过1,这样就可以解决一些排序二叉树不效率的问题了。

blob.pngblob.png

第一张图很明显的二叉排序树的优势就完全没有了,变成了普通的线性遍历搜索了。但是他变形成为一颗AVL平衡二叉树后,明显的效率就提高了,例如查找5,AVL3次,第一张的5次。


const int EH = 0;
const int LH = 1;
const int RH = -1;

class Node {
    public int data;
    public int bf;
    public Node cLeft;
    public Node cRight;
}

平衡二叉树AVL的结点,每个结点都保存着一个bf值,就是它左子树-右子树的值的状态。

三个const表示,EH相等,LH左边高1,RH右边高1,没有出现高2的,因为有的话就会去平衡它了。


左右旋转操作:

左平衡:

插入操作:

删除操作:

完整的代码可以看:Github


首页 我的博客
粤ICP备17103704号