红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。 每个结点不是红色就是黑色 根节点是黑色的 如果一个节点是红色的,则它的两个孩子结点是黑色的 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数目的黑色结点 每个叶子结点都是黑色的(此处的叶子结点指的是空结点) 为什么红黑树就能保证其最长路径中节点个数不会超过最短路径节点个数的两倍? 从性质3,4可以得出,一棵红黑树的最短可能路径就是全为黑结点,即为N: 而最长可能路径就是由一黑一红结点构成的路径,该路径当中黑色结点与红色结点的数目相同,即长度为2N ; 红黑树结点的定义其实和AVL树差不多,只不过红黑树结点少了平衡因子,多了颜色。 enum color { RED, BLACK }; template <class K, class V> struct RBTreeNode { RBTreeNode<K, V>* _left;...