• 平衡二叉树的左旋转


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

        //左旋转方法 
        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

  • 相关阅读:
    结构体和枚举
    [转载]玩转Asp.net MVC 的八个扩展点
    SQLServer处理亿万级别的数据的优化措施
    Lambda表达式
    匿名类型
    单例模式——懒汉式和饿汉式详解
    Cglib动态代理实现原理
    集合的子集
    深入剖析ThreadLocal
    java注解的自定义和使用
  • 原文地址:https://www.cnblogs.com/wllhq/p/13645892.html
Copyright © 2020-2023  润新知