二叉树的特例:
1、二叉搜索树:左子结点总是小于或等于根结点,而右子结点总是大于等于根结点。
2、堆:最大堆和最小堆。最大堆中根结点的值最大,最小堆中根结点的值最小。适用于快速找出最大值或者最小值的问题。
3、红黑树:树中的结点定义为红黑两种颜色,并通过规则确保根结点到叶结点的的最长路径的长度不超过最短路径的两倍。红黑树是具有下列着色性质的二叉查找树:
(1)每一个结点或者着成红色,或者着成黑色;
(2)根是黑色的;
(3)如果一个结点是红色的,那么它的子结点必须是黑色的;
(4)从一个结点到一个NULL指针的每一条路径必须包含相同数目的黑色结点。
推论:红黑树的高度最多是2log(N+1)。因此查找是一个对数操作。C++的STL中,set,multiset,map,multimap等数据结构都是基于红黑树实现的。