news 2026/9/2 21:47:35

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/9/2 17:50:47

37、Python实用示例:从DNS管理到FTP镜像

Python实用示例:从DNS管理到FTP镜像 在网络管理和运维中,Python以其强大的功能和简洁的语法,为我们提供了许多高效的解决方案。本文将介绍几个实用的Python示例,包括DNS管理、LDAP使用、Apache日志报告以及FTP镜像。 1. 使用Python管理DNS 管理DNS服务器相对来说比配置A…

作者头像 李华
网站建设 2026/8/31 6:37:51

语音克隆完整指南:5步快速掌握个性化声音复制技术

语音克隆完整指南&#xff1a;5步快速掌握个性化声音复制技术 【免费下载链接】OpenVoice 项目是MyShell AI开源的即时语音克隆技术OpenVoice&#xff0c;旨在提供一种能够快速从少量语音样本中准确复制人类声音特征&#xff0c;并实现多种语言及语音风格转换的解决方案。 项…

作者头像 李华
网站建设 2026/9/1 3:53:57

21、树莓派户外与多媒体使用指南

树莓派户外与多媒体使用指南 户外气球发射项目 追踪有效载荷 SPOT卫星GPS信使设备 :使用无需业余无线电执照,但需年度许可证,费用较高,且不提供高度数据,在约30,000英尺以上不报告位置数据。 业余无线电自动分组报告系统(APRS)信标 :价格便宜且无需使用费用,但需…

作者头像 李华
网站建设 2026/9/2 20:49:01

Examor:打造个性化AI学习助手的终极指南

Examor&#xff1a;打造个性化AI学习助手的终极指南 【免费下载链接】examor For students, scholars, interviewees and lifelong learners. Let LLMs assist you in learning &#x1f393; 项目地址: https://gitcode.com/gh_mirrors/ex/examor Examor是一款革命性的…

作者头像 李华
网站建设 2026/9/1 22:24:21

网络安全专业的就业前景

网络安全专业就业前景怎么样&#xff1f; 网络的安全是指通过采用各种技术和管理措施&#xff0c;使网络系统正常运行&#xff0c;从而确保网络数据的可用性、完整性和保密性。网络安全的具体含义会随着“角度”的变化而变化。比如&#xff1a;从用户&#xff08;个人、企业等&…

作者头像 李华
网站建设 2026/9/2 2:10:28

WLED终极指南:ESP32智能灯光控制全解析

WLED终极指南&#xff1a;ESP32智能灯光控制全解析 【免费下载链接】WLED Control WS2812B and many more types of digital RGB LEDs with an ESP8266 or ESP32 over WiFi! 项目地址: https://gitcode.com/gh_mirrors/wl/WLED WLED项目是一个专为ESP8266和ESP32微控制器…

作者头像 李华