二叉搜索树

wsl2 配置ubuntu 固定ip wsls ubuntu 设置固定ip 阅读详情

1.什么是搜索二叉树

搜索二叉树遵循 左《 中《右 节点的原则

2.搜索二叉树构建

递归构建

void insertNode(p,z)
{
 if(p== null)
 {
   p = z;
   p.left = p.right =null;
   p.p = null;
   return;
 } 
  if(z.key < p.key)
  { 
   if(p.left != null){
     insertNode(p.left,z);
   }  
   else
   {
      p.left = z;
      z.p =p;
   }
 } 

非递归构建

void insertNode(root,z)
{
    y = null;
    x = root;
    while(x ! =null)
    {
        y = x;
        if(z.key < y.key)
        {
          x =x.left;
        }
        else
            x =x.right;
    }
    z.p =y;//父节点
    if(y == null)
    {
      root = x;
    }
    else if(z.key < y.key)
    {
     y.left = z;
    }
    else if(z.key >= y.key)
    {
     y.right = z;
    }

}

3.搜索二叉树查找

node*  searchNode(p,z)
{
    x = p;
    while(x != null&&x !=z.key)
    {
        if(z.key < x.key)  x = x.left;
        else x =x.right;
    }
    return x;   
}

4.搜索二叉树删除节点

/*在来看删除节点,删除节点可能会用到 后继的概念(只有有两个孩子的情况才用到)。

后继节点是什么呢,因为搜索二叉树必须是中序排列好的呀(左《中《右),所以中序是从小到大有序,为了保持这种有序就需要在用后继(用前驱也可)节点替换当前节点保证顺序。

 删除有四种情况,
        没有子节点直接删除就ok了
        如果左孩子为空且右孩子不空,直接将孩子节点提到删除点z
        如果右孩子为空且左孩子不空,直接将孩子节点提到删除点z
        如果有两个子节点,那么寻找后继来替换掉删除点z,同时需要处理好后继y的右子树
 */
因为在删除中多处用到了节点替换,先写个独立方法,这里T 指向一棵树

void translateNode(T,z,y)
{
     if (z == null ) return;
     if (z.p != null )
     {
        T.root = y;
     }
     else if(z.p.left ==z)
     {
      z.p.left = y;
     }
     else if(z.p.right == z)
     { 
      z.p.ritht = y;
     } 

     if (y!=null)
       y.p = z.p;   
}  


void deleteNode(T,z)
{  
   if(z.left ==null&&z.right==null)
   {
        if(z.p.left = z) z.p.left = null;
        else z.p.right = null;
   }
   else if(z.left = null)
   {
       translateNode(T,z,z.right);
   }    
   else if(z.right = null)
   {
        translateNode(T,z,z.left);
   }
   else
   {
        y = tree_minNode(z.right);
        if(y.p != z)
        {
          translateNode(T,y,y.right);
          y.right = z.right;
          y.right,p =y;
        }
        translateNode(T,z,y); 

        y.left =z.left;
        y.left.p =y;
   }
}

补充:查找搜索二叉树某个节点的后继节(中序遍历顺序)

1.有右子树则肯定在右子树中
2.如果没有右子树则在有左子树的最底层祖先节点
(2 的意思 从该点向上找,只要找到该节点所在子树是某节点的左子树就ok)

node* findNext(z)
{
    x = null;   
    if(z.right != null)
    {
        return findMinNode(z.right);
    }
    x = z.p;//向顶层方向伴随指针
    while(x !=null&& x.right == z ) //找到该子树作为left才能停止
    {
        z = x;
        x = x.p;
    }
    return y;
}
DisplayPort 1.4扰码原理与16位并行LFSR实现 DisplayPort物理层信号完整性依赖于数据扰码技术,其本质是通过线性反馈移位寄存器(LFSR)对传输数据进行伪随机化处理,以改善频谱分布、抑制低频能量堆积、提升时钟恢复能力并降低EMI辐射。该技术广泛应用于高速串行接口如DP、PCIe和USB,核心在于确定性伪随机序列生成与收发端同步。DisplayPort 1.4强制要求符合ANSI X3.230标准的16级LFSR,并在8b/10b编码后执行扰码;而传统串行实现难以满足21.6Gbps速率下的时序约束,必须采用并行展开结构——将16拍移位压缩为单周 阅读详情

相关推荐

从理论到波形:NE555多谐振荡器设计与示波器实战验证

本文详细介绍了NE555多谐振荡器的设计原理与实战验证方法。从基础理论到电路参数计算,再到面包板搭建与示波器测量,全面解析如何利用NE555芯片实现稳定的方波输出。通过实际案例演示了频率调整、占空比优化等技巧,并提供了常见问题排查指南,帮助电子爱好者快速掌握这一经典电路设计。

weixin_29159613的博客 281

数据结构——二叉搜索树

遍历数组中的水果,当遇到相同的水果时只在结点的value上进行++操作,以至于来计算每个水果出现的次数,最后中序遍历输出。将minright的值赋给cur然后直接使cur的右结点变为minright的右结点。1、若删除的是根节点,那么直接让根结点指向原根结点的右子树。1、若删除的是根节点,那么直接让根结点指向原根结点的左子树。2、若删除的不是根节点,那么将它的子树托孤给它的父节点。2、 若所需要删除的结点的右结点不是其右子树的最左结点。1、若所需要删除的结点的右结点是其右子树的最左结点。

m0_57249790的博客 8077

WorkBuddy Skill赋能HYSYS与Comsol:AI工作台下的仿真自动化实践

AI Agent正将工业软件自动化带向新高度。在工程仿真领域,流程模拟与多物理场分析常因重复性操作而效率低下,Aspen HYSYS的批量工况调整、Comsol的参数扫描与网格重构均属此类。WorkBuddy这类AI工作台通过Skill将软件二次开发能力封装为可插拔技能包,利用HYSYS的COM/OLE接口和Comsol的Java API,实现自然语言指令到自动化执行的转变。其技术价值在于降低自动化门槛、沉淀工程经验,并支持日志审计与异常重试。在实际应用中,无论化工流程的灵敏度分析,还是激光焊接、移动网格等

weixin_29055699的博客 301

数据结构之搜索二叉树

本文详细介绍了二叉树数据结构的衍生二叉搜索树的模拟实现以及应用

都市隸人的博客 1702

直流无刷BLDC六步换相“电流环”、“速度环”的关系

4、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载非正常变化,例如速度严重“超速”时,需要“限速”保护,这个任务是“速度环”的,这时“速度环”会根据设定的速度上限,控制触发器,将电机速度迅速将下来,电流降下来,在“限速”保护期间,“电流环”失去对触发器的控制作用;3、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载正常变化,“速度环”对速度大小的控制作用是没有的;6、很多人想当然,“电流环”不工作,电机“电流”哪里来的?

u011878611的博客 5471

aubo i5 + realsense D435i识别抓取实践二

aubo i5 + realsense D435i识别抓取实践二前言一、手眼标定是什么?二、标定软件安装1.aruco_ros安装2.vision_visp安装3.easy_handeye安装4.realsense驱动安装5.安装realsense ROS软件包三、配置1.launch文件修改2.打印二维码四、手眼标定1.启动launch文件2.标定步骤3.发布tf关系 前言 前面配置好了aubo机械臂的ROS软件包,机械臂可以正常运行后,接下来我们进行机械臂与相机的手眼标定。手眼标定分为eye_on_ha

转角 6374

搜索二叉树(超详解)

普通二叉树其实意义不大,如果用二叉树存储数据的话,还不如顺序表,链表这些。搜索二叉树它的意义就很大了。左边比根小,右边比根大,子树也满足这个特征。

庖丁解牛,恢恢乎游刃有余 2001

YOLOv11【第三章:高阶应用与落地篇·第1节】一文搞懂,YOLOv11-Seg 实例分割:Mask 原型生成与系数预测原理解析!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1249

数据结构——搜索二叉树

数据结构——搜索二叉树

weixin_67401157的博客 1151

tsmc12:via0的spacing问题(Via0.S.1)

12nm有个via0 grid的概念,除了普通fill外,基本都有via0这一层,这一层需要与via0 grid对齐。手动调整cell的位置比较容易出这个drc,比如修m0po max length drc时。解决方法1: 替换EEQV类型cell,这种类型是专门为了修via0 Grid问题存在的。更多学习内容请关注「拾陆楼」知识星球。解决方法2: 翻转或移动。

m0_61544122的博客 1115

在 SAP S/4HANA 的 BP 事务里做保存前校验:BDT 事件、BUPA_FURTHER_CHECKS 与 CVI 扩展 BAdI 一次讲透

SAP BP事务保存前校验机制解析 摘要:本文系统梳理了SAP BP事务保存前的校验机制,揭示了三种关键校验点的差异与适用场景: BDT框架DCHCK事件:最靠近UI层,适合屏幕字段级校验,但API调用时可能失效 Classic BAdI BUPA_FURTHER_CHECKS:全局拦截点,可阻断整个BP保存,适合核心业务规则 CVI扩展校验:仅管控供应商/客户段落,需注意可能产生"BP已保存但段落未保存"的情况 文章通过真实案例(如黑名单校验、付款冻结等)展示了各校验点的最佳实践,并特

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 310

C++《二叉搜索树》

在初阶数据结构中我学习了树基础的概念以及了解了顺序结构的二叉树——堆和链式结构二叉树该如何实现,那么接下来我们将进一步的学习二叉树,在此会先后学习到二叉搜索树、AVL树、红黑树;通过这些的学习将让我们更易于理解后面set、map、哈希等的使用以及对底层结构的了解。在此先本篇中我们将了解二次搜索树的概念以及实现二叉搜索树插入、删除等的操作,在了解了这些之后相信在下一篇的set和map的学习你将轻松许多,接下来就开始本篇的学习吧!!!

mljy.博客 3787

【雷达】一维和二维自适应波束形成(DBF))DBF附matlab代码

1 简介 数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域.由于电磁工作环境的恶化和大量射频干扰的存在,在极低的信干噪比(SINR)条件下进行目标检测和信息提取十分困难.对于阵列系统,往往采用自适应数字波束形成(ADBF)技术,来抑制强干扰和方向性干扰对有用信号的影响.介绍了数字波束形成器的基本原理及其DSP的实现结构.​ 2 完整代码 clc;clear all;close all;%%%%%%%%%%%%%%%%%一维DBF%%%%%%%%%%%%%

qq_59747472的博客 7266

【C++】二叉搜索树

从根开始比较,查找,比根大则往右边走查找,比根小则往左边走查找。 最多查找高度次,走到到空,还没找到,这个值不存在非空右子树的所有值大于根节点的值 左右子树都是二叉搜索树第一个不满足,因为值为5的节点在值为10的节点的右边,正常来说10的右边都应该比10大分为两种情况 若插入的值在二叉树中不存在,则通过比较进行插入若插入11,因为11比8大,所以跟10比较,而11比10大,所以走10的右子树14,14与11比较,因14>11,所以走14的左子树13,11与13比较,因13>11,故作为13的左子树,遇见NU

qq_62939852的博客 2149

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【二叉搜索树】二叉搜索树的用法以及实现

二叉搜索树的用法以及实现

有趣的中国人的博客 1657

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

二叉搜索树详解

二叉搜索树(Binary Search Tree)顾名思义是一种特殊的二叉树,主要用于查找与去重,与我们常见的二叉树不同,他对于结点的值有特殊的要求,二叉搜索树的定义如下主要有以下3点。这里我们的33大于15,在15的右子树上面,仿佛没有错,但是我们以30为父节点来看,33大于30,却出现在30的左子树上面,这是错误的!删除只有一个孩子的结点相对来说还是比较简单的,我们要找到要删除节点的父亲结点,并判断是父亲节点的左边还是右边,子节点的左边还是右边,最后链接起来就可以了。修改如下图后结果就是正确的了。

2301_79964905的博客 1213

二叉搜索树——BinarySearchTree

本文主要介绍了二叉搜索树的概念,特性,和实现,以及在介绍了面试中常考的一些题型

终为nullptr 1610
上一篇: vs调试时查看stlport 变量内容
下一篇: Emacs 学习
writeeee
博客等级 码龄18年 35粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值