7.3树形查找

7.3.1二叉排序树

1.定义

目的:提供查找删除,插入关键字的速度

二叉排序树的特性:

  1. 左子树<根节点<右子树
  2. 左右字数也分别是一棵二叉树

对二叉排序树进行中序遍历,可以得到一个递增的有序序列

2.二叉排序树的查找

 查找从根节点开始,沿分支逐层向下比较的过程

  1. 二叉排序树非空则定值与根节点数据比较
  2. 小于,则在左子树上查找,循环1,2,3
  3. 大于,则在右子树上查找,循环1,2,3
/*二叉排序树的查找*/
BST* BST_Search(BiTree T,ElemType key) {while (T!=Null&&key!=T->data) {//若数空或等于其根节点的值,则结束循环if (key < T->data) T = T->lchild;//若key小于当前值则在左子树上查找else  T = T->rchild;	//若key大于当前值则在右子树上查找}return T;
}

3.二叉排序树的插入

插入节点过程:

  1. 二叉树为空直接插入
  2. 若关键字k<根节点值,则插入到左子树
  3. 若关键字k>根节点值,则插入到右子树
  4. 若关键字k=根节点值,则插入失败,二叉排序树不允许两个相同的值存在

最坏时间复杂度o(h)

/*二叉树的插入*/
int BST_Insert(BiTree &T,KeyType k){if (T==NULL){T = (BiTree)malloc(sizeof(BSTNode));//创建新节点T->data = k;T->lchild = T->rchild = NULL;return 1;}else if (k==T->data) {//树中已有此数return 0;//插入失败}else if(k< T->data)//key<T->data,则进入左子树{BST_Insert(T.lchild,k);}else {BST_Insert(T.rchild,k);}}

4.二叉排序树的删除

1.删除叶子节点---nobody cares

2.删除node只有左子树和右子树

3.删除节点既有左子树,又有右子树

        法一:找到被删除节点的直接后继

        法二:找到被删除节点的直接前驱

5.二叉排序树的查找效率分析

主要取决于树的高度

最好情况  二叉排序树左右子树高度差不超过1,则时间复杂度为log2n

最坏情况  二叉排序树只有一个左子树or右子树,则时间复杂度为n

7.3.2平衡二叉树

1.定义

任意节点左子树右子树之差不超过1的树为平衡二叉树

出现是为了预防二叉排序树高度增长过快

平衡因子=左子树高度-右子树高度={-1,0,1}

2.平衡二叉树的插入及"不平衡"问题

1.保证"左<中<右"

2.保证平衡

3.最小不平衡字数:插入路径上离插入节点最近的平衡因子的绝对值大于1的节点作为根的子树

平衡二叉树的插入及调整操作

LL

右单旋转将父节点右旋代替爷节点作为根节点,爷节点为父节点的右孩子
RR

左单旋转

将父节点左旋代替爷节点作为根节点,爷节点作为父节点的左孩子

LR先左上旋,再右上旋...
RL先右上旋,再左上旋......

3.平衡二叉树的删除

4.查找效率分析

7.3.3红黑树

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550325.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

foxmail登录不了hotmail的解决办法

foxmail登录不了hotmail 由于hotmail的信息安全保护&#xff0c;9.16号就在foxmail登录不了&#xff0c;因为习惯了foxmail&#xff0c;且微软改了验证方式&#xff0c;换要他们的客户端才行&#xff0c;就感觉好麻烦。 在foxmail输入原密码报错 修改验证方式 也是会报错 解决…

第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;蓝桥杯关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 【问题描述】 在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm 841mm&#…

LLM推理需要多大GPU?背完再去面试

在实际工作中&#xff0c;经常有人问&#xff0c;7B、14B 或 70B 的模型需要多大的显存才能推理&#xff1f;如果微调他们又需要多大的显存呢&#xff1f; 为了回答这个问题整理一份训练或推理需要显存的计算方式。如果大家对具体细节不感兴趣&#xff0c;可以直接参考经验法则…

original多因子图绘制

成品参考 首先导入数据 设置过程 设置X轴 设置图 双击空白部分设置图层宽度&#xff08;也需要设置高度&#xff09; 颜色配置 1.删除边框 合适的参数与颜色&#xff08;设置为单色&#xff09;

【Python】Python多行输入储存为字典,值为列表

1.储存在变量中 # 输入格式&#xff1a;3 5 tabel, customer map(int, input().split()) print("table:", tabel) print("customer:", customer) 2.储存在列表中 #输入格式&#xff1a;2 4 2 tabel_number [int(x) for x in input().split()] print(&q…

跨国企业如何布局知识产权战略以应对国际条约的挑战与机遇?

在跨国企业的全球运营中&#xff0c;知识产权的战略布局显得尤为重要。面对复杂多变的国际环境&#xff0c;跨国企业如何在全球范围内有效保护其知识产权&#xff0c;同时利用国际条约促进合作并应对挑战&#xff0c;成为了一个亟待探讨的问题。 跨国企业知识产权的全球布局 1…

项目管理系统中的风险管理:如何识别和应对项目风险?

在现代项目管理中&#xff0c;风险管理是确保项目成功的关键因素之一。无论是技术、资源还是市场的变化&#xff0c;风险无处不在。有效的风险管理能够帮助团队识别潜在问题并制定应对策略&#xff0c;从而避免项目延误和预算超支。项目管理系统在这一过程中扮演着重要角色&…

微积分入门(真的很入门)

前置知识 前置知识&#xff1a;极限 我们要求 lim ⁡ x → 1 x 2 − 1 x − 1 \lim\limits_{x \to 1}\dfrac{x^2-1}{x-1} x→1lim​x−1x2−1​。 右边我们都知道是什么意思&#xff0c;那左边是什么呢&#xff1f; 意思就是&#xff0c;当 x x x 无限接近 1 1 1 时&…

相亲交友系统的社会影响:家庭结构的变化

随着互联网技术的发展&#xff0c;相亲交友系统已成为许多单身人士寻找伴侣的重要途径。这些平台不仅改变了人们的社交方式&#xff0c;还对家庭结构产生了深远的影响。本文将探讨相亲交友系统如何促使家庭结构发生变化&#xff0c;开发h17711347205并通过简单的Python代码示例…

华为OD机试 - 对称美学(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

kubernetes基础配置(入门操作)

资源管理 一、资源管理方式 1.命令式对象管理&#xff1a;直接使用命令去操作kubernetes资源 [rootmaster ~]# kubectl run nginx-pod --imagenginx --port80 kubectl run --generatordeployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubect…

煤矿厂智能化可视化:提升安全与效率

运用图扑可视化技术对煤矿厂进行实时监控与数据分析&#xff0c;提高安全管理水平和生产效率。

Java8/9/10/11新特性

目录 一、 Lambda表达式二、函数式(Functional)接口三、方法引用与构造器引用3.1、方法引用3.2 构造器引用和数组引用3.2.1 构造器引用3.2.2 数组引用 四、 强大的Stream API4.1 Stream API说明4.2 Stream 的操作三个步骤4.3 创建 Stream方式4.4 、Stream 的中间操作4.4.1 筛选…

VMware Tools安装——VMware Tools是灰色的,不能安装, (不带图形化界面的虚拟机,只有命令行的模式!!!)

问题 VMware Workstation 中“ 安装VMware Tools”是灰色的&#xff0c;无法点击安装 解决 1.挂载镜像文件 打开 VMware&#xff0c;点击虚拟机设置>>CD/DVD&#xff0c;选择“使用ISO映像文件”&#xff0c;点击“浏览” 再选择 VMware 安装目录中的 linux.iso 文件&a…

FPGA到底要怎么学?一篇文章直接让你搞清楚!!!

学好FPGA&#xff08;现场可编程门阵列&#xff09;涉及理论学习和实践操作的结合。以下是学习FPGA的基本流程和建议&#xff1a; 关注我&#xff0c;我会更新更多的知识&#xff0c;这会给你很多的帮助。 1. 理论基础 数字逻辑&#xff1a;了解基本的逻辑门、组合逻辑、时序…

JS对不同浏览器的检测问题

Navigator对象也称浏览器对象&#xff0c;该对象包含了浏览器的整体信息&#xff0c;如浏览器名称&#xff0c;版本号等。Navigator对象由Navigator浏览器率先使用&#xff0c;后来各方浏览器都开始支持Navigator对象&#xff0c;逐步成为一种标准。 一、Navigator对象的属性 …

HttpClientHandler 详解及使用

在现代网络编程中&#xff0c;HttpClientHandler 是一个至关重要的组件&#xff0c;它提供了对 HTTP 请求的底层配置和控制。本文将详细介绍 HttpClientHandler 的核心概念、配置选项以及如何在实际应用中使用它。 1. 什么是 HttpClientHandler&#xff1f; HttpClientHandle…

mongodb光速上手

开始 mongodb是一种nosql数据库&#xff0c;即非关系型数据库。 安装好后将bin目录添加到环境变量。 安装studio-3t&#xff0c;这是可视化编辑器。 启动 mongo --host localhost --port 27017 指令 查看所有库 show dbs 使用或创建并使用库 use school use 数据库名 向…

引入 LangChain4j 来简化 LLM 与 Java 应用程序的集成

作者&#xff1a;来自 Elastic David Pilato LangChain4j 框架于 2023 年创建&#xff0c;其目标如下&#xff1a; LangChain4j 的目标是简化将 LLM 集成到 Java 应用程序的过程。 LangChain4j 提供了一种标准方法&#xff1a; 根据给定内容&#xff08;例如文本&#xff09;创…

【Lcode 随笔】C语言版看了不后悔系列持续更新中。。。

文章目录 题目一&#xff1a;爬楼梯问题描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1a;深入剖析&#xff1a; 题目二&#xff1a;打家劫舍问题描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1a;深入剖析&#xf…