博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
红黑树
阅读量:6364 次
发布时间:2019-06-23

本文共 558 字,大约阅读时间需要 1 分钟。

 

当在某个节点x上做左旋时,我们假设它的右孩子是y节点并且不为NIL。左旋以x到y之间的轴为支撑,左旋后,y成为该局部新的根,x成为y的做孩子,而y的左孩子成为x的右孩子,即图中的β。我们以一段伪代码说明左旋的过程:

y<-right[x]   //把x的右儿子保存为yright[x]<-left[y]   //把y的左儿子给x作为右儿子p[left[y]]<-x   //把x设为y的左儿子的爸爸,这一步与上一步对应,因为指针都是双向的p[y]<-p[x]      //把x的爸爸设定为y的爸爸if p[x]=nil[T]    //如果x的爸爸本来就是空的  then root[T]<-y  //那么y就变成了根节点  else if x=left[p[x]]   //否则,如果原来x是它爸爸的左儿子    then left[p[x]]<-y   //就把y设为原来x爸爸的左儿子    else right[p[x]]<-y   //不然就把y设为原来x爸爸的右儿子left[y]<-x     //x这时候转下来成为y的左儿子p[x]<-y    //y 也就成了x的爸爸了

 

E左旋

S右旋

 

转载于:https://www.cnblogs.com/cxhfuujust/p/10795153.html

你可能感兴趣的文章
使用Annotation设计持久层
查看>>
深入实践Spring Boot2.4.1 Neo4j依赖配置
查看>>
Zen Cart 如何添加地址栏上的小图标
查看>>
SecureCrt 连接Redhat linux
查看>>
[NHibernate]持久化类(Persistent Classes)
查看>>
安装oracle数据库提示“程序异常终止”解决方案
查看>>
如何在Hive中使用Json格式数据
查看>>
iOS开发网络篇—简单介绍ASI框架的使用
查看>>
linux如何恢复被删除的热文件
查看>>
Eclipse(MyEclipse) 自动补全
查看>>
Struts2中dispatcher与redirect的区别
查看>>
zabbix agentd configure
查看>>
[From OpenBSD Man Page]CARP
查看>>
地图点聚合优化方案
查看>>
Google Chrome 快捷方式
查看>>
备考PMP心得体会
查看>>
vue proxy匹配规则
查看>>
线上应用故障排查之一:高CPU占用
查看>>
Extend Volume 操作 - 每天5分钟玩转 OpenStack(56)
查看>>
review what i studied `date` - 2017-4-1
查看>>