平衡二叉树与AVL树

此生再无相见时 提交于 2019-12-19 02:30:24

平衡二叉树:对于任意一个节点左子树和右子树的高度差不能超过1

二分搜索树容易退化成链表 使用平衡因子转化为平衡二叉树

平衡二叉树的高度和节点数量之间的关系也是O(logn)的

标注节点的高度

平衡因子:左右子树的高度差的绝对值
维护平衡因子

右旋转过程LL
右旋转逻辑

 //右旋转
    private Node rightRotate(Node y) {
        Node x = y.left;
        Node T3 = x.right;

        x.right = y;
        y.left = T3;

        y.height = Math.max(getHeight(y.left), getHeight(y.right)) + 1;
        x.height = Math.max(getHeight(x.left), y.height) + 1;
        return x;
    }

左旋转过程RR左旋转逻辑

 //左旋转
    private Node leftRotate(Node y) {
        Node x = y.right;
        Node T2 = x.left;

        x.left = y;
        y.right = T2;

        y.height = Math.max(getHeight(y.left), getHeight(y.right)) + 1;
        x.height = Math.max(y.height, getHeight(x.right)) + 1;
        return x;
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!