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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值