平衡二叉树的左旋转
好比挑水的时候在扁担上找一个合适的位置。不至于前重后轻或前轻后重。
//左旋转方法 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