二叉排序树
树型操作鼻祖 其他树的增删查都如此
平衡二叉树
查找效率最高 但维护成本高
对平衡二叉树的插入操作而言,其本质上比二叉排序树(BST)的插入操作多了一个平衡操作,解决了二叉排序树插入操作可能出现的斜树,不平衡问题。
我们以插入一个结点w为例进行说明平衡二叉树插入操作的具体算法步骤。
对结点w执行标准的二叉排序树的插入操作;
从结点w开始,向上回溯,找到第一个不平衡的结点z(即平衡因子不是 -1,0或1的结点);y为从结点w到结点z的路径上,z的孩子结点;x是从结点w到结点z的路径上,z的孙子结点 。
然后对以z为根结点的子树进行平衡操作,其中 x、y、z 可以的位置有一种情况,平衡操作也就处理以下四种情况:
y 是 z 的左孩子,x 是 y 的左孩子 (Left Left ,LL );
y 是 z 的左孩子,x 是 y 的右孩子 (Left Right ,LR );
y 是 z 的右孩子,x 是 y 的右孩子 (Right Right ,RR );
y 是 z 的右孩子,x 是 y 的左孩子 (Right Right ,RL );
在所有的四种情况下,我们只需要重新平衡以 z 为根的子树,并且保证以 z 为根的子树的高度与 w 插入之前的高度相同,整颗树就变得平衡了。
红黑树
继承了平衡二叉树的高查找效率 但继承不多 维护成本变低
B树
为了减少判断 即减少磁盘存取次数
B+树
在单位内存为了获得更多的数据存储