一、二叉查找树
1、概念:二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质
2、特点:
a、任意节点左子树不为空的话,则左子树的值均小于根节点的值。
b、任意节点右子树不为空的话 ,则右子树的值均大于根节点的值。
c、任意节点的左右子树也分别是二叉查找树。
3、局限性及应用
一个二叉查找树由n个节点的值随机构成,在某些情况下,二叉查找树会退化成一个有n个节点的线性链表,如果我们的根节点选择最小或最大的数,那么二叉查找树就会退化成线性结构,因此在二叉查找树的基础上又出现了AVL树和红黑树,它们两个都是基于二叉查找树,只是在二叉查找树的基础上又对其做了限制。
二、AVL树
1.概念:AVL树是带有平衡因子的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡。
2.特点:左右子树的高度差不超过1
3.局限性:由于通过旋转来维护AVL树的平衡所付出的代价大于从中获得的效率,所以大多数的场景下用红黑树。
4.应用:AVL树适合插入和删除次数较少,查找次数多的情况。
三、红黑树
1.概念:红黑树是二叉查找树的一种,但是在节点增加一个存储位置表示节点的颜色,它是一种弱平衡二叉树。
2.性质:
a、每个节点非红即黑
b、根节点是黑色
c、每个叶子节点都是黑色
d、如果一个节点是红色则它的两个儿子都是黑色
e、对于任意节点,其到叶子节点的每条路径都包含相同的黑色节点个数
3.应用:应用于STL和IO多路复用epoll的实现用红黑树组织管理sockfd,以支持快速增删查改。