DraculaW

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  19 随笔 :: 0 文章 :: 7 评论 :: 0 Trackbacks
红黑树 是一项重要的数据结构
他提供快速的排序动作, 支持二分查找

红黑树的定义
1 节点不是红的就是黑的
2 根节点和叶子节点为黑的
3 红色节点的父亲节点是黑的
4 从根节点到叶子节点 走过的黑色节点的数目是相同的

红黑树是一种很复杂的数据结构 最复杂的就是他的插入和删除后的平衡问题

在插入时 的算法

首先 插入的是红色的节点
2 如果它的父亲是黑色的 就做第八步
3 如果它的父亲是红色的而且它有叔叔节点也为红色的 那么把他的父亲和叔叔节点都设为黑色的 祖父节点设为红色的 然后对爷爷 重新进行第2步
4 如果他没有树树节点或者叔叔节点为黑色 那么再看 如果他相对于父亲的位置与父亲相对于祖父的位置 如果一致 走到第6
5 如果不一致 那么对他于他的父亲节点进行轮转 转到一致 然后 再把指向它的指针指向他的父亲节点
6 然后把现在指针指向的节点的父亲(由于他已经与父亲换位了,父亲是它)设为黑色, 爷爷设为红色
7 然后再对爷爷重新进行第二步
8 确保根节点为黑色的

其实如果想明白了也不是很复杂
可是现在看到删除 我又觉得复杂了 呵呵
路走了还不到一半 还得努力

posted on 2007-11-22 20:47 DraculaW 阅读(304) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理