关闭

STL源码剖析之树 tree 二叉搜索树 红黑树【2013.12.04】

标签: C++stl搜索二叉树数据结构
738人阅读 评论(0) 收藏 举报
分类:

STL源码剖析之树 tree 二叉搜索树 红黑树【2013.12.04】

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 


树 在数据结构中是一个很重要的成员。详细无论哪本数据结构的书都有介绍!如果没有的话,你确定你买的是对的书么?


STL中,树相关的就是 平衡二叉树,二叉搜索树就是一种平衡二叉树,红黑树则又是一种二叉搜索树。

书中对二叉搜索树这样定义:


在对树操作的过程中,为了保持树的平衡性,就需要对树进行旋转

搜索树的插入节点,每次都是在叶子结点插入,再进行旋转。

这里插入没有旋转

【删除】



【旋转】


此处 【11】为插入节点,当找到插入点 插入之后,发现破坏了平衡性,因而旋转操作

此处旋转过程为,插入点父节点的父节点(PP,即【14】)向上一级,PP的父节(PPP,即【18】)点向下,变成PP的右子节点,员PP的右子节点变成PPP的左子节点。

其他不变。

这种旋转,STL源码剖析 称为 【单旋转】因为一次旋转就能恢复平衡。

主要使用情况:插入点的父节点是左子节点的时候。


此处是双旋转,进行两个单旋转。才能恢复平衡。

此处旋转过程为:

(一)插入点的父节点(P,即【16】)向上,P的父节点(PP,即【14】)向下,PP变成P的左子节点,插入点变成PP的右子节点,P接管PP原来的父节点关系。

(二)做单旋转过程,返回去看吧,呵呵



【红黑树】

红黑树是一种受限制的搜索树,其限制如下:



欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:119822次
    • 积分:2030
    • 等级:
    • 排名:第18954名
    • 原创:74篇
    • 转载:17篇
    • 译文:7篇
    • 评论:38条
    C++ QQ群158427611
    [url=http://weibo.com/u/2197480972?s=6uyXnP][img]http://service.t.sina.com.cn/widget/qmd/2197480972/efad6eae/4.png[/img][/url]
    最新评论