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

原创 2013年12月04日 10:33:24

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 

相关文章推荐

STL源码剖析——RB-Tree(红黑树)

前言 有关红黑树的zh

STL源码阅读-红黑树(RB-tree)、AVL树、AA树

STL源码剖析看到了第五章节,源代码部分也看完了几个比较关键的

STL源码剖析---红黑树原理下

算法导论书上给出的红黑树的性质如下,跟STL源码剖析书上面的4条性质大同小异。       1、每个结点或是红色的,或是黑色的       2、根节点是黑色的       3、每个叶结点(NIL...

STL源码剖析---红黑树原理详解

一、红黑树概述      红黑树和我们以前学过的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。不过自从红黑树出来后,AVL树就被放到了博物馆里,据...

STL源码剖析---红黑树原理详解下

算法导论书上给出的红黑树的性质如下,跟STL源码剖析书上面的4条性质大同小异。       1、每个结点或是红色的,或是黑色的       2、根节点是黑色的       3、每个叶结点(NIL)是黑...

STL源码剖析---红黑树原理

一、红黑树概述      红黑树和我们以前学过的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。不过自从红黑树出来后,AVL树就被放到了博物馆里,据...
  • zqt520
  • zqt520
  • 2012年07月28日 14:14
  • 6083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL源码剖析之树 tree 二叉搜索树 红黑树【2013.12.04】
举报原因:
原因补充:

(最多只允许输入30个字)