news 2026/6/10 16:04:32

27.红黑树(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
27.红黑树(上)

从根节点走到空算一条路径,这个有9条路径。最短最长不一定存在。

插入相同节点,avl高度更低,左右很均衡,红黑树不那么均衡,但效率不差,最短路径把他切开,就是满二叉树

avl树比红黑树更接近logN,红黑树比logN多一点,CPU很快没什么差别

h不为0,旋转加变色

变色+继续往上处理,变色要让这棵树之前是一个节点现在还是一个节点,向上处理就是爷爷节点变成红的红的,如果父亲也是红的,连续的红节点,继续处理。

#pragma once enum Colour { RED, BLACK }; template<class K, class V> struct RBTreeNode { // 这里更新控制平衡也要加入parent指针 pair<K, V> _kv; RBTreeNode<K, V>* _left; RBTreeNode<K, V>* _right; RBTreeNode<K, V>* _parent; Colour _col; RBTreeNode(const pair<K, V>& kv) :_kv(kv) , _left(nullptr) , _right(nullptr) , _parent(nullptr) {} }; template<class K, class V> class RBTree { typedef RBTreeNode<K, V> Node; public: bool Insert(const pair<K, V>& kv) { if (_root == nullptr) { _root = new Node(kv); _root->_col = BLACK; return true; } Node* parent = nullptr; Node* cur = _root; while (cur) { if (cur->_kv.first < kv.first) { parent = cur; cur = cur->_right; } else if (cur->_kv.first > kv.first) { parent = cur; cur = cur->_left; } else { return false; } } cur = new Node(kv); cur->_col = RED; if (parent->_kv.first < kv.first) { parent->_right = cur; } else { parent->_left = cur; } // 链接父亲 cur->_parent = parent; // 父亲是红色,出现连续的红色节点,需要处理 while (parent && parent->_col == RED) { Node* grandfather = parent->_parent; if (parent == grandfather->_left) { // g // p u Node* uncle = grandfather->_right; if (uncle && uncle->_col == RED) { // 变色 parent->_col = uncle->_col = BLACK; grandfather->_col = RED; // 继续往上处理 cur = grandfather; parent = cur->_parent; } } else { // g // u p Node* uncle = grandfather->_left; // 叔叔存在且为红,-》变色即可 } } _root->_col = BLACK; return true; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 8:30:52

高效处理数据的ProcessX方法

ProcessX数据处理方法ProcessX数据处理涉及多种技术和工具&#xff0c;适用于不同场景的数据清洗、转换和分析需求。以下是几种常见的处理方法&#xff1a;数据清洗与预处理 使用Python的Pandas库可以高效处理缺失值、重复数据和异常值。例如&#xff0c;df.dropna()删除缺失值…

作者头像 李华
网站建设 2026/6/9 11:43:54

38、Python编程:回调函数、数据处理与系统管理全解析

Python编程:回调函数、数据处理与系统管理全解析 1. 回调函数基础 回调函数和传递函数的概念可能对许多人来说比较陌生,但深入了解它是很有价值的。在Python中,函数是“一等公民”,这意味着可以像操作对象一样传递和处理函数。 1.1 函数作为一等公民 以下代码展示了函数…

作者头像 李华
网站建设 2026/6/10 2:04:12

FIO工具Windows终极指南:一键下载安装完整教程

FIO工具Windows终极指南&#xff1a;一键下载安装完整教程 【免费下载链接】FIO工具最新版Windows版本下载 FIO工具最新版Windows版本现已发布&#xff0c;专为Windows平台优化&#xff0c;提供高效、稳定的性能体验。本资源包含最新版FIO工具的安装包&#xff0c;支持64位系统…

作者头像 李华
网站建设 2026/6/2 7:16:11

5大关键技术解析:构建金融级容灾系统的完整指南

在数字化金融时代&#xff0c;金融容灾和云计算备份技术已成为保障业务连续性的核心支撑。随着金融业务对系统可用性要求的不断提升&#xff0c;构建高效可靠的容灾体系成为每个金融机构的技术必修课。本文将深度解析金融信息系统容灾备份的关键技术实现路径。 【免费下载链接】…

作者头像 李华
网站建设 2026/6/10 7:45:21

18、树莓派户外应用与防水及寻宝功能实现

树莓派户外应用与防水及寻宝功能实现 1. 利用脚本上传温湿度数据到 Google Docs 要使用脚本将植物的湿度和温度数据上传到 Google Docs,需要先使用自己的 Google Docs 账户详细信息对脚本进行配置。具体操作步骤如下: 1. 用喜欢的文本编辑器打开 Adafruit_DHT_googledocs…

作者头像 李华
网站建设 2026/6/10 7:05:58

Fooocus-MRE:终极AI图像生成解决方案,免费开启创意无限

Fooocus-MRE&#xff1a;终极AI图像生成解决方案&#xff0c;免费开启创意无限 【免费下载链接】Fooocus-MRE Focus on prompting and generating 项目地址: https://gitcode.com/gh_mirrors/fo/Fooocus-MRE 想要体验专业级的AI图像生成却苦于复杂的配置&#xff1f;Foo…

作者头像 李华