平衡二叉树:指的是左右子树高度差的绝对值不超过一的二叉排序树。
主要思路:1、用左高度跟右高度代替平衡因子,大于1进行L~调整,小于-1进行R~调整
2、每次插入都通过递归计算一次各结点高度,然后进行旋转调整
3、判断旋转操作时只需判断从失衡节点开始前两个节点 LL:左左左 、 RR:右右右 、 LR:左右~ 、RL:右左~
坑:贯穿整个树的各个部分的就是值传递跟引用传递l,因为java中主要是值传递,详见:引用传递跟值传递详解
1、t后还附带孩6子节点,并不是单个节点(执行旋转操作时)
2、BalanceTree tree = t; tree跟t指向同一个内存地址
3、BalanceTree tree = new BalanceTree(); tree跟t不是同一个地址
4、判断旋转操作时只需判断从失衡节点开始前两个节点 LL:左左左 、 RR:右右右 、 LR:左右~ 、RL:右左~
5、递归一定要加上=号,否则可能造成值传不回来
想要实现平衡二叉树的建立,就要了解它的四种旋转调节方式:LL 、RR 、LR 、RL
LL:这种调整是因为在失衡节点的左孩子的左子树插入结点造成的。
RR:这种调整是因为在失衡节点的右孩子的右子树插入结点造成的。
LR:这种调