red-black-tree - 插入红黑树
问题描述
纯粹从概念上讲,我如何将 21 插入到这棵红黑树中?
解决方案
- 你找到了插入点。从根开始
Compare 21 with 25 => it is less => follow to left child
Compare 21 with 15 => it is more => follow to right child
Compare 21 with 22 => it is less => follow to left child
Compare 21 with 20 => it is more => there is no right child so you insert.
- 将该节点作为 RED 节点插入。现在有一个红色的孩子-红色的父母违反父母是 20。祖父母是 22,叔叔是 24。当父母和叔叔都是红色时,您可以通过翻转父母、祖父母和叔叔的颜色来修复违规。现在将祖父母视为要修复的新节点 (22)。它的父母是 15 岁,也是 RED,一个新的违规行为。
- 对于新的违规:Node 为 22,Parent 为 15,Grandparent 为 15,Uncle 为 35。当 Parent 为 RED 而 Uncle 为 BLACK 时,您轮流修复。您可以查看节点是否位于树的内部,并围绕父节点 15 向外旋转,向左旋转。22 成为 25 的新左子,颜色不变。
- 现在在树 25 的根处向右旋转,加上交换根和它的右孩子的颜色来修复树。
你应该有
推荐阅读
- google-apps-script - Google Apps 脚本 - 电子邮件触发器在域外不起作用
- angular8 - 尝试在Angular8中加载本地json文件
- amazon-s3 - 我注意到 AWS CodePipeline 创建了它的 S3 文件夹,该文件夹已阻止所有公共访问设置为关闭
- batch-file - 批量从数组中获取目录名称
- angular - 如何在 fromEvent FileReader.loadended 之后对组件进行单元测试
- sql - 解析 JSON 时出错,缺少逗号 pos
- angular - 我应该在 Angular 的 flex-layout 中取消订阅 MediaObserver 订阅吗?
- monitoring - 问题:GKE 集群节点详细信息中的空白图形(此时间间隔内没有数据)。我该如何解决?
- sql-server-data-tools - DACPAC(对于数据库)是否应该创建服务器登录?
- python - 当网络抓取多个 URL 时,for 循环不起作用。只抓取一个 URL