就是一种高级的二叉树,由于它能够自己控制到平衡二叉树的高度,所以查找效率和平衡二叉树一样,而且实现也很方便。
红黑树的特点是由定义决定的,红黑树的所有节点不是黑色就是红色,根节点和所有叶子节点都是黑色的,而红色节点的两个子节点都是黑色。而从根节点到叶子节点的所有路径的黑色节点数目是相同的,所以无论你怎么插入删除元素他都是个平衡状态。不需要普通二叉树那样还要费时费力的平衡操作。
具体的实现,你最好看看算法导论,上面有详细的算法伪代码和理论基础证明。C++的STL中有封装好的红黑树模板,Java的TreeSet和TreeMap也是使用红黑树实现的。真的只是为了使用的话一般没有必要学习太多,直接调用就可以了。 |