二分搜索树又名有序二叉查找树,它有一个特点是左子树的节点值要小于父节点值,右子树的节点值要大于父节点值。基于这样的特点,我们在查找某个节点的时候,可以采取二分查找的思想快速找到这个节点,时间复杂度期望值是为O(log n),但是它有最坏的的情况下。
例如,输入数组[9,7,5,3,1],如果要满足二分搜索树的规则插入一个个节点,这样的二叉树会退化成一条线性表,待会查找元素的时候时间复杂度已达O(N)。
所以针对这种情况,我们引申出了平衡二分搜索树,它每个节点的左右子树高度差不会超过1,它能在O(log n)内完成插入、查找和删除操作。平衡二分搜索树种类比较多,AVL树是其中的一种,但是它是最早被发明的自平衡二分搜索树。
AVL树也会被称为高度平衡树,因为它比二分搜索树多了一个特点:任一节点的左右子树高度差最大为1。如果以后去参赛,可以根据数据的情况更改高度差最大值,甚至也可以制定高度差相差几倍。
计算高度和平衡因子
计算高度是从叶子节点开始的,起始高度默认为1。然后计算叶子节点的父节点高度,比较左右子树的高度,采取最大值再加1就是这个节点的高度了。依此类推,直到整个树的顶点。
计算平衡因子也跟计算高度从叶子节点开始的&