红黑树教程与实验平台——不信你再不懂红黑树!

2023-10-15 10:50

本文主要是介绍红黑树教程与实验平台——不信你再不懂红黑树!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自制的红黑树教程与实验平台:https://github.com/Jinzhe-Zhang/Red_Black_Tree
界面:
主界面
命令台操作(动图,可能会卡):命令台操作

建议观看这个视频教程后再学习使用

几个月前,红黑树给我的感觉就是:

  1. 听说过一百次
  2. 但就是?不会

想着不能再这么gg下去,于是大前天终于决定拿下红黑树了!

刚开始看了几个红黑树的教程都没太耐着性子看,步骤太多还杂。最后就是照着这个视频教程一点点抠完红黑树增删结点的整个过程。

为了巩固每一步操作,我先码了Ruby代码,后又对每一步加上了解释顺便找一找bug。有些操作还是有细微差别的,而且很多差别只有自己码代码的时候才能发现:

比如插入操作中最后一条 “ 转后我与祖父色互换 ” 在我的程序中是 “ 转后新父旧祖父色互换 ” (由于新树中父亲最大,记成 “ 新旧长辈色互换 ” ),做两次旋转的操作 “ 三角转直直再转 ” 时,我借助学习AVL树时处理左右单双旋的经验,以七段分的方法替代两次旋转。这些在程序里都已经有详细的说明了。

最后附上口诀,希望这个程序能够帮助到大家:

插入口诀

我根我爸黑,那就很简单
我爸要是红
伯伯也红,黑爸黑伯红祖父
伯伯若黑,七段拆合
新旧长辈色互换
全部结束根染黑

删除口诀

删除节点两后代,交换键值往下看。
删除节点是树根,直接删除或替换。
删除节点无后代,自己若黑修双黑。
删除节点有一子,直接替换染成黑。

修复双黑口诀

无兄弟,再修父
兄为红,红父黑兄再转上
兄为黑
兄无红儿看父亲
父为红,染黑父,父为黑,再修父
若有红儿儿染黑,
七段拆合,新旧长辈色互换。

这篇关于红黑树教程与实验平台——不信你再不懂红黑树!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/217182

相关文章

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J