树:只有一个根节点,有孩子结点,父节点
二叉树:每个节点最多有两个孩子结点。
二分搜索树:也叫二叉排序树,首先它是一颗二叉树,且左右孩子都存在时,左孩子都小于当前节点值,右节点都大于当前节点值。
平衡二叉树:对于任意一个节点,左右子树高度差不能超过1
满二叉树:树中每一层节点都是满的
完全二叉树:是二叉树,接近于满二叉树,但又不是满二叉树,存放元素时从左到右依次存放,将当前层存满后,再继续向下面层存放,不需在意这一层是否存满。同时也是一个平衡二叉树
(完全二叉树可以理解为将数组的数排列成树的形状,并且完全二叉树的元素有索引)
平衡二叉搜索树(AVL树):首先是一颗二叉排序树,左孩子的值小于当前节点值,右孩子的值大于当前值,最主要的是它也是一颗平衡树,添加元素时会自动维持平衡。
2-3树:树中只有二节点或三节点
2节点:存储一个元素,最大有两个孩子,所以叫二节点
3节点:存储两个元素,最多有三个孩子
三节点不需要分裂;
四节点可以分裂成三个二节点,然后与父节点及其孩子进行融合;
红黑树:由2-3树转换而来,红色节点表示是它和父亲节点是融合关系,红色表示两个结点的关系
二分搜索树、平衡二叉搜索树(AVL树)、红黑树(RB树)总结
AVL树多依靠于平衡因子和旋转来维持平衡,所以我们需要多次添加和删除改变节点时,使用AVL树会造成较大的开销,所以我们的查询操作多于插入删除操作时,AVL树很好用的。
红黑树维护了节点颜色和一些规则,以及旋转来维持平衡,插入删除操作多于查询操作时,可以使用红黑树。
当然,两棵树的查询操作耗费是一致的,因为维持平衡后,树都是平衡的,只是两种树维持平衡的方式不一样。