模拟平衡二叉查找树底层实现(AVL)
GitHub源码地址:(https://github.com/BradenLei/AVL) 1、基本概念及操作: 1)平衡二叉查找树:在二叉查找树的基础上满足平衡因子为-1,0,1的树结构 2)平衡因子:右子树的高度减去左子树的高度;-1表示左偏重,+1表示右偏重 3)重新平衡数:从AVL树中插入或者删除一个元素后,如果树变得不平衡了,执行一次旋转操作来重新平衡该树,有四种方式: LL旋转、RR旋转、LR旋转、RL旋转 以 LL说明:两个L表示两次左偏重 4)AVL树的设计:由于AVL树是二叉查找树,AVLTree设计为BST的子类(BST实现在上一篇博文中,这里不再累述) 5)重写insert、delete方法:AVL树中的这两操作基本一致,不同之处在于树可能需要重新平衡。 6)AVL树的高度为O(logn),所以其search、insert以及delete方法的时间复杂度为O(logn) AVL实现: package binary; import java.util.ArrayList; public class AVLTree<E extends Comparable<E>> extends BST<E> { public AVLTree() { } public AVLTree(E[] objects) { super(objects); } @Override