二叉排序树

STM32控制舵机SG-5010转动,HAL库 首先设置时钟为72Mhz,预分频系数为72-1,自动重装载计数器的值为5000-1,这样的话就可以得到一个5ms的脉冲宽度,5000的计数值可以让舵机的旋转角度变得更加易控且相对精准,计算旋转角度的时候也可以更加精确。所以我们5ms脉宽,period是5000脉宽-------------角度----------pulse0.5ms-------------0度----------500;1.0ms------------45度---------1000; 阅读详情

一.定义
数据集无序方便插入与删除 有序利于查找
在一般情况下,查询效率比链表结构要高
在这里插入图片描述

二.性质
1.若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2.若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
3。左、右子树也分别为二叉排序树(递归)
4.没有键值相等的结点

三.查找操作
遍历采用中序遍历,这样成为了有序
1.二叉树的结构
在这里插入图片描述
2.代码
在这里插入图片描述
四.插入操作
插入要先查找是否存在 存在则不再插入 插入就是将关键字放到树中合适的位置
在这里插入图片描述
五.删除操作
删除的核心思想就是 不是特殊结点(既有左孩子又有右孩子 处于中间位置)只需要释放结点 把剩下部分连在一起即可
在这里插入图片描述

对于特殊结点(例如上图105) 则需要用**它的前驱或者是后驱 把它的数据给替换掉 释放其前驱或者后驱 再连接其余结点

//删除操作
Status DeleteBST(BiTree *T, int key)
{
	if(!*T)
	{
		return FALSE;
	}
	else
	{
		if(key == (*T) -> data)
		{
			return Delete(T);
		}
		else if(key < (*T) -> data)
		{
			return DeleteBST(&(*T) -> lchild, key);
		}
		else
		{
			return DeleteBST(&(*T) -> rchild, key);
		}
	}
} 

Status Delete(BiTree *p)
{
	BiTree q, s;
	if((*p) -> rchild == NULL) //右子树为空只需要重接它的左子树 
	{
		q = *p;
		*p = (*p) -> lchild;
		free(q);
	}
	else if((*p) -> lchild == NULL) //只需重接它的右子树 
	{
		q = *p;
		*p = (*p) -> rchild;
		free(q);
	}
	else //利用前驱 把前驱的数据和要删除的结点数据交换 释放掉前驱 
	{
		q = *p;
		s = (*p) -> lchild;
		while(s -> rchild) //一直找到最右的 即前驱 
		{
			q = s;
			s = s -> rchild; //s是前序结点 q是s的双亲结点 
		}
		(*p) -> data = s -> data;
		if(q != *p)
		{
			q -> lchild = s -> lchild; 
		}
		else
		{
			q -> lchild = s -> lchild;
		}
		free(s);
	}
	return TRUE;
}

六.总结
二叉排序树的查找性能取决于二叉排序树的形状
我们希望二叉排序树是比较平衡的 即其深度与完全二叉树相同 进而引出平衡二叉树的问题

RAG在医药行业为什么80%都翻车了? 这篇文章不是要劝你别做RAG,而是把坑说清楚。医药行业有它的特殊性——监管压力、专业术语密度、多语言混排、文档结构复杂——这些因素叠加在一起,让标准RAG教程里的那套方法论几乎直接失效 阅读详情

相关推荐

麒麟操作系统安装达梦数据库ARM版

Linux安装达梦数据库ARM版

运维@小兵的博客 8770

算法学习之二叉排序树

为了使二叉树的查找效率更高,我们对二叉树进行了优化,如此产生了对于查找效率比较高的二叉排序树(也叫二叉搜索树)

fnetworkmaster的博客 531

使用 VPN 访问太理内部网相关问题总结【太原理工大学】

电脑连接 VPN,访问校园内部网相关问题总结,太原理工大学。

m0_52861684的博客 9884

【数据结构】AVL(平衡)二叉树——搜索性能的优化

1. AVL树的概念 在上篇博客:二叉搜索树中我有讲到,二叉搜索树可以缩短查找的效率,但最后发现 如果数据有序或接近有序时构造的二叉搜索树将退化为单支树,这时查找元素相当于在有序表中搜索元素,效率低下。 因此,两位俄罗斯的数学家又发明了一种解决上述问题的方法:当二叉树插入新结点后,如果能保证每个结点左右子树的高度差的绝对值不超过1(或许需要对树中节点的位置进行调整),即可降低树的高度,从而减少平均...

ly_6699的博客 2239

【UV打印机】PrintExp打印软件教程(二)-主界面介绍

PrintExp软件主界面如下图所示PrintExp软件的主界面主要包括主菜单区,工具栏区,界面显示区,状态栏。以下是上述部分的介绍。

Print World的专栏 6300

“基于车载车机 ADB 的安卓自动化测试”以及“类似智谱 AutoGLM 的 AI 安卓自动化项目”的整理和选型建议。

本文系统梳理了安卓自动化测试两大路线。传统ADB框架中,**Appium**适用于企业级测试,**AndroidViewClient**和**Airtest**适合脚本化与图像识别场景。AI驱动的方案里,**智谱Open-AutoGLM**擅长中文场景的视觉理解与操作,**DroidRun**支持多模型与跨平台,而**Android-MCP**则适合将安卓能力作为工具集成到现有AI平台。选型需根据稳定性、技术栈与AI集成需求决定。

weixin_39072720的博客 901

二叉排序树(二叉查找树)基本操作_20230417

二叉排序树 二叉查找树 数据结构 C语言

Jasonchen1224的博客 3669

用 n8n 提取静态网页内容:从 HTTP Request 到 HTML 节点全解析

本文介绍了如何使用n8n的HTTP Request和HTML节点组合提取静态网页内容。首先通过HTTP Request节点获取网页HTML源码,然后使用HTML节点解析并提取所需数据。关键点包括:1)HTTP Request节点设置URL和GET方法;2)HTML节点配置Source Data为JSON并指定data字段;3)重点掌握Extraction Values参数,特别是CSS选择器(使用.和#定位元素)、Key命名、Return Value类型选择等。文章通过实例演示了标题和正文的提取方法,并提供

muyouking 4569

循环单链表

循环单链表 单链表的缺点:尾端加入元素操作的效率低,因为这时只能从表头开始查找,直至找到表的最后一个结点,而后才能链接新结点 循环单链表: 最后一个结点的next域不用None,而是指向表的最后一个结点 实现循环单链表,采用b), 这样可以同时支持O(1)时间的表头/表尾插入和O(1)时间的表头删除,哪个结点算是表头或表尾,主要是概念问题,从表的内部形态上无法区分 这种表对象只需要一个数据域_rear, 它在逻辑上始终引用这表的尾结点,前端加入结点,就是在尾端结点和首结点之间加入新的首结点,尾结点引用

weixin_46129834的博客 507

K230+canMV开发中常见的数据类型转换参考示例

【代码】K230+canMV开发中常见的数据类型转换参考示例。

weixin_47446386的博客 68

在 ABAP Push Channel 里玩转 Detached Client:用 Attach Handle 把 WebSocket 连接交接给业务逻辑

摘要:本文介绍了ABAP Push Channels (APC)中的Detached Client技术,该技术通过将WebSocket连接建立与后续处理分离,实现更高效的实时通信。核心流程包括创建连接、使用connect_and_detach交接连接、以及通过attach handle重新附着发送消息。文章还探讨了PCP协议和AMC技术在企业级推送场景中的应用,并通过示例代码展示了Detached Client的具体实现方式。这种设计解决了传统轮询的资源浪费问题,特别适用于生产线监控、客服系统等需要服务端主

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

二叉排序树详解

摘要:本篇笔记专门介绍二叉排序树,重点讲解了二叉排序树的特性,以及二叉排序树各方面的基本实现。

云杉木屋 2万+

手把手写深度学习(27):如果获得相机位姿态的plücker embedding?以RealEstate10K为例

用plücker embedding表示相机的位姿是一种非常常用的方法,这篇博客以RealEstate10K数据集为例子,详细讲解如何从相机的轨迹坐标中获得plücker embedding,用于下一步模型的学习。

沉迷单车的追风少年 2239

基于C语言二叉排序树的创建

二叉排序树的建立和中序输出

Pdlgyxforever的博客 5983

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

二叉排序树删除节点_图解:什么是二叉排序树?

小禹禹,你们好呀,在这里先感谢一位朋友,名叫绍锴,他也是景禹的忠实读者,是通过LeetCode上景禹的一道题解认识的,后来他关注了公众号,加了我好友,有时候相互交流一些学习上的问题,我们也渐渐成了朋友。前些天他建议更新文章的内容不用太多,每次一个知识点,后面再附带一两道LeetCode相关题目解析,我觉得这是个很好的建议,从今以后,景禹也将沿用这个建议。今日便是开始。今天我们谈一谈 二叉...

weixin_39617497的博客 2737

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

二叉排序树的判断

二叉排序树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 今天我们要判断两序列是否为同一...

爱敲代码的小赤佬 4345

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

二叉排序树与平衡二叉排序树的转化

二叉排序树与平衡二叉树的转化开始单独看视频的时候感觉是明白的,但是看到题就不知所措了,如果单向旋转还可以,碰到LR型和RL型的就有困难了,所以一定要写个博客来把它弄懂。这篇博客会首先介绍二叉排序树,再介绍什么是平衡二叉树,为什么要会有平衡二叉排序树,最后来看转化。 1.什么是二叉排序树?     二叉排序树(Binary Sort Tree)又称查找二叉树,它可以是一个空树,或者要满足

颗粒归仓 5314

二叉排序树的构建

什么是二叉排序树?官方的定义如下: 1)对于一棵树,若左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3)左、右子树也分别为二叉排序树; 4) 没有键值相等的结点。 举个例子:如下图 可以发现满足上述条件,所以可以称之一颗二叉排序树。 如何用代码构建一颗二叉树呢? 往下看 代码实现 我们来通过其特点随机生成一颗二叉排序...

ONEMORE6499的博客 4479

[数据结构与算法] 二叉排序树之平衡二叉排序树

文章目录二叉排序树1. 二叉排序树2. 平衡二叉排序树 二叉排序树 1. 二叉排序树 二叉排序树的检索 def bt_search(btree, key): bt = btree: while bt: if key < bt.val: bt = bt.left elif key > bt.val: ...

阿辉的博客 1688

ASL和二叉排序树

对照着生成树的图,如果查找元素比7还要小,则肯定查找失败,对应着结点7的左孩子位置为null,对比到结点7的左孩子位置,需要进行3次比较才能确认查找元素不存在(和29比,和13比,和7比,再下找没了,所以是3次比较),同一层中,空的还有16的左孩子结点(代表着大于13小于16的数据也是不存在,但是也要比较三次才能确认),32的左孩子结点(大于29小于32的数据),41的左孩子结点(大于37小于41的数据);查找第n个数据长度n。数据:7,10,13,16,19,29,32,33,37,41,43。

whiteBearClimb的博客 5625

二叉排序树(Java实现)

文章收藏的好句子:坚持和放纵是永远对立的矛盾,好习惯的坚持就像春天随手丢下的种子,经历漫长的仲夏,终将会迎来收获的金秋。而坏习惯的养成真的只能让人生的脚步停止在寒风凛冽的冬天,让你永远看不见下一个春天。目录1、数列的查询和添加问题2、二叉排序树 2、1二叉排序树的介绍 2、2二叉排序树的创建和遍历 2、3二叉排序树的删除1、数列的查询和添加...

qq_37837621的博客 2445
上一篇: 查找
下一篇: 平衡二叉排序树
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值