原文:红黑树的C++实现--根据《算法导论》中的算法实现

红黑树是一种有序的平衡二叉树,STL中的map和set容器的底层实现就是红黑树,在 STL源码剖析 中有另一种实现方式。不过STL中的实现相对来说晦涩难懂,而 算法导论 中的算法则比较清晰易懂。这里的这份实现就是 算法导论 中STL算法的一种C 实现。关于红色树的特性以及规则这里还有这里都有详细描述。下面就是我的实现代码: 将上面的代码复制粘贴到同一个文件中,文件名RBTree.h。下面是测试程 ...

2013-02-28 11:48 6 2162 推荐指数:

查看详情

和AVL实现与比较-----算法导论

一、问题描述 实现3种的两种:,AVL,Treap 二、算法原理 (1) 是一种二叉查找,但在每个结点上增加一个存储位表示结点的颜色,可以是red或black。满足以下五个性质: 1) 每个结点或是红色或是黑色 2) 根结点是黑色 3) 每个叶结点 ...

Wed Jan 14 08:45:00 CST 2015 0 2091
算法导论——

  是一棵二叉搜索,每个结点上增加了一个属性来存储颜色是红色还是黑色,可以确保没有一条路径会比其他路径长出2倍,所以近似可以认为是平衡的。   每个结点包含5个属性:color, key, left, right, p。如果一个结点没有子结点或者父结点,则该结点的相应指针属性 ...

Tue Aug 14 00:19:00 CST 2018 0 724
算法导论-9.习题

这一篇解决《算法导论章节的部分习题,在上一篇自己亲自实现后,解决这些题目就轻松多了。 练习13.1-6 在一棵高度为 $k$ 的,内节点最多有多少个?最少有多少个? 高度为 $k$ 的二叉树,全高度最小为 $k+1$,最大为 $2k+2$ 。内节点最多 ...

Thu Jan 17 04:16:00 CST 2013 3 3073
——算法导论(15)

1. 什么是 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索。但遗憾的是,只有当二叉搜索高度较低时,这些集合操作才会较快;即当的高度较高(甚至一种极端情况是变成了1条链)时,这些集合操作并不比在链表上执行 ...

Fri Oct 30 06:47:00 CST 2015 1 6941
算法导论的学习

最近学习了二叉搜索,感觉收获颇丰,在此写一篇文章小结一下学到的知识,顺便手写一下Java代码。 1.引言 先来讲讲什么是二叉搜索,二叉搜索有如下特点:他是以一颗二叉树(最多有两个子结点)来组织的,对于的某个节点,其左子树的所有元素均小于该节点,其右子树的元素均大于 ...

Sun Jun 11 12:47:00 CST 2017 0 1188
算法导论-8.详解

是一种相当复杂的数据结构,一种能够保持平衡的二叉查找。如果条件极端,随机生成的二叉树可能就是一个单链表,深度为 $n$ ,而的高度,即使在最坏情况下也是 $\Theta(n)$ ,通过满足以下5条性质来保证这一点: 节点是红色或者黑色的。 根节点的黑色 ...

Tue Jan 15 03:29:00 CST 2013 8 4119
的删除(算法导论

的删除分两个部分介绍,第一个部分介绍节点的删除;第二部分介绍在将节点删除后对红的调整,使得其能符合的性质。 1、节点的删除 假如要删除的节点为z,这时,有三种情况: 1)节点z没有孩子节点,这时直接将z节点删除,然后判断节点z是否为黑色 ...

Wed Nov 05 23:10:00 CST 2014 1 4017
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM