AVL树

平衡二叉搜索树

平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

平衡因子

某结点的左子树与右子树的高度(深度)差即为该结点的平衡因子(BF,Balance Factor)。平衡二叉树上所有结点的平衡因子只可能是 -1,0 或 1。如果某一结点的平衡因子绝对值大于1则说明此树不是平衡二叉树。为了方便计算每一结点的平衡因子我们可以为每个节点赋予height这一属性,表示此节点的高度。

AVL树的添加

protected void afterAdd(Node<E> node) {
        while((node = node.parent)!=null){
            if(isBalanced(node)){
                updateHeight(node);
            }else{
                reblance(node);
                break;
            }
        }
    }

 

posted @ 2020-05-27 21:37  jesscia5  阅读(138)  评论(0编辑  收藏  举报