红黑树到底是啥

俺是非科班出身,所以理解红黑树用了好久,下面说说自己的理解,如果有什么错误的地方(肯定是有的。。。),轻喷。
首先,我们知道查询最好的数据结构是平衡二叉树,但是对于平衡二叉树(所有节点的左右子树高度差不超过1)。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转非常耗时的。
所以我们旋转一种不追求那么平衡的二叉树(红黑树),用相同数量的黑球间插入红球来控制各路径的相对长度不会差出一倍。
总之,红黑树就是平衡二叉树的低配版本(任何节点左腿右腿不会差一倍)。

红黑树规则

  1. 每个节点非红即黑
  2. 根节点是黑的;
  3. 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的; 这里
  4. 如图所示,如果一个节点是红的,那么它的两儿子都是黑的;(黑色节点可以连续!但是数量差距需要用红色的来丑)
  5. 对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点;(不然只能旋转替换连接)
  6. 每条路径都包含相同的黑节点; 弱平衡关键

通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍(因为总数量等于红+黑,黑数量是一致的,红的比黑的少),因此,红黑树是一种弱平衡二叉树(由于是弱平衡,可以看到,在相同的节点情况下,AVL树的高度低于红黑树),相对于要求严格的AVL树来说,它的旋转次数少,所以对于搜索,插入,删除操作较多的情况下,我们就用红黑树。

二叉树旋转(用来调节左右高度)
在这里插入图片描述

与平衡二叉树相比:
新插入节点是红色节点,所以如果父节点是黑的就直接插入了(注意这里是不管空的叶子节点的,叶子节点相当于添头),不用管别的树高

在这里插入图片描述

基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值