平衡二叉树的左旋转

好比挑水的时候在扁担上找一个合适的位置。不至于前重后轻或前轻后重。

    //左旋转方法 
    private void leftRotate() {
        //创建新的结点,以当前根结点的值 a
        Node newNode = new Node(value);
        //把新的结点的左子树设置成当前结点的左子树 b
        newNode.left = left;
        //把新的结点的右子树设置成带你过去结点的右子树的左子树 c
        newNode.right = right.left;
        //把当前结点的值替换成右子结点的值 d
        value = right.value;
        //把当前结点的右子树设置成当前结点右子树的右子树 e 
        right = right.right;
        //把当前结点的左子树(左子结点)设置成新的结点 f
        left = newNode;
    }

当发现右边节点过多。就需要左旋转。即将右护法升为教主。

右护法篡夺教主之位分三步:

1,扶植一个亲信,偷取了原教主的值和左子树 a b

2,帮助右护法接管左子树 c

3,右护法登基成功。d

4,新教主将立功的亲信作为左护法,自己的原右子树作为右护法。e f

posted @ 2020-09-10 15:21  Valentino  阅读(248)  评论(0编辑  收藏  举报