链表 ——> 二叉树 ——> 二叉查找树 ——> 平衡二叉树
二叉树时间复杂度:O(logn) ,即2^x(树的深度)=N
如:21亿点需要查找几次:2^32 = 21亿,查找32次。
1、满二叉树
2、完全二叉树:设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边。(除最后一层外,为一颗满二叉树)
3、二叉排序树(二叉查找树)的定义:
某结点左子树的所有结点的值都小于该节点的值且该结点右子树的值都大于该节点的值
4、平衡二叉树是特殊的二叉排序树
改进版:平衡二叉树 AVL 为了尽量降低树的高度,平均查找长度越小,查找速度越快
平衡因子 = 左子树的高度 - 右子树的高度
平衡二叉树的条件:
1、是二叉排序树
2、满足每个结点的平衡因子绝对值不大于1
平衡二叉树的平衡调整:
左旋如下:
S结点上提,E结点下降,伴随指针向左滑动
右旋示例:
5、红黑树:寻找相对平衡的二叉树
1.每个结点要么是红的要么是黑的。
2.根结点是黑的。
3.每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。
4.如果一个结点是红的,那么它的两个儿子都是黑的。
5.对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。
红黑树变换:
1、改变颜色:红变黑、黑变黑
2、左旋、右旋