高级算法设计与分析 学习笔记4 二叉查找树

左子树小于父节点小于右子树。

那么如何构建一个二叉查找树呢?

如何遍历一颗树?

这个其实就是中序遍历(在中间访问根节点)

如何查找一个元素?

可以看到后面这种方法更好,虽然都是递归,但后者不需要一直调用函数。

插入元素

这种算法的复杂度显然是等于树高。假如是平衡树就好了

寻找后继节点:

后继就是在这棵树中刚好比这个点大一位的节点。如果它有右子树就好办。没有的话,我们就要找让这个节点作为其左子树一部分的第一个节点

比如说13,它没有右子树,而且往上追溯一直都是右子树(都是比它小的)等到头一回发现是左子树的,那就是它的后继

找前驱也是类似意思。

删除节点

有两个子树的,那就要找其右子树中最小的数(也就是直接后继)来当新的父节点

可以注意到这棵树的性能和初始选择的值很有关系。似乎和快排有点关系啊。

随机建立的二叉查找树:

这样可以让树尽量平衡一点。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

还不知道MES和PLC咋通信?5分钟看懂

最近网上看到一些写MES和PLC通信的文章。或许因为行业不同的缘故吧,对于里面的一些观点,我个人是持保留意见的。首先在我所在行业里,MES是不会和PLC直接通信的。MES和PLC之间通常还有一个其他系统。该系统在不同行业的叫法不一样。比如有的行…

【828华为云征文|华为云Flexus X实例:一键助力中小企业,快速部署个性化网站!】

文章目录 前言搭建自己专属网站准备工作具体操作服务器环境确认进入宝塔软件商店JTBC网站内容管理系统一键部署填写域名放行80端口JTBC安装初始页数据库信息配置管理员信息配置完成安装网站管理后台网站前台 验证后台配置内容前台访问的效果 结语 前言 在云计算盛行的时代&…

“颂歌唱响 乐动云山”云山天地携手幸福金龄会举办七夕国风艺术展演活动

弘扬中华优秀传统文化,充分挖掘七夕内涵,倡导勤劳智慧、忠贞爱情、家庭美满、追求美好的价值理念,由云山天地主办,幸福金龄会指导,广州风暴文化传媒有限公司承办的“颂歌唱响 乐动云山”七夕国风文化艺术展演活动&…

在python里把图变成gif

import scipy.io import matplotlib.pyplot as plt import imageio import numpy as npdata scipy.io.loadmat("/文件路径/Sol.mat")# 提取数据 t_current data[t].flatten() XX, YY np.meshgrid(data[x].flatten(), data[y].flatten()) u_pred_plot_final data[…

第二百二十三节 JPA教程 - JPA列定义示例

JPA教程 - JPA列定义示例 当将Java bean映射到实体时,我们可以在映射注释中设置数据库表列定义。 以下代码将列定义设置为 VARCHAR(40)。 Column(columnDefinition "VARCHAR(40)") private String name;Column注释表示物理数据库列的特定特征。 例子 …

金智维K-RPA基本介绍

一、K-RPA基本组成 K-RPA软件机器人管理系统基于“RPAX”数字化技术打造,其核心系统由管理中心(Server)、设计器(Control)、机器人(Robot/Agent)三大子系统组成,各子系统协同工作,易于构建协同式环境。 管理中心(Server&#xff…

解决Metasploit调用Nessus报错问题

问题描述 Error while running command nessus_scan_new: undefined method []’ for nil:NilClass 解决方法 发现报错,经过网上查询解决方法 在Nessus服务器执行,下面的版本号可能有所不同,根据自己的情况更改,需要管理员身份执…

AI预测地球未来,温室效应失控?地球变金星?

想象一下,如果地球的气候突然失控,我们熟悉的蓝色星球会变成什么模样? 最近,一项由法国科学家使用人工智能系统进行的气候模拟研究揭示了一个惊人的未来景象:地球可能会变得如同金星一般,拥有高达270个大气…

Jupyter Notebook设置代码提示和自动代码补全

算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号滴滴我 文章目录 在使用Jupyter Notebook中,会出现Jupyter不像Pycharm一样,可以 自动补全代码以及 代码方法提示等功能,这时候就需要通过给Jupyter安装插件来进行实现。 执行步骤&#…

《PneumoLLM:利用大型语言模型的力量进行尘肺病诊断》|文献速递--基于深度学习的医学影像病灶分割

Title 题目 PneumoLLM: Harnessing the power of large language model for pneumoconiosis diagnosis 《PneumoLLM:利用大型语言模型的力量进行尘肺病诊断》 01 文献速递介绍 在计算机辅助诊断领域,对医学数据的处理和分析能力至关重要。这不仅有助…

Nature Communications 多模触觉-视觉融合机器人:用于灵巧机器人做家务

随着机器人越来越多地参与人类日常生活,对模仿人类能力的追求推动了机器人多模态感官的进步。然而,目前的感知技术仍然不能满足机器人在家庭任务/环境中的需求,特别是在多感官整合和融合、快速反应能力和高灵敏度感知方面面临着巨大的挑战。 …

91、K8s之ingress上集

一、Ingress service模式: loadbalance NodePort:每个节点都会有一个指定的端口 30000-32767 内网 clusterip:默认模式,只能pod内部访问 externalName:需要dns提供域名 1.1、对外提供服务的ingress service&…

动态单窗口IP代理:提升网络操作的灵活性和安全性

互联网时代,各种网络工具层出不穷,而动态单窗口IP代理无疑成为了近年来的热门话题。今天,我们就来聊聊这个神奇的工具,看看它到底有什么独特之处。 什么是动态单窗口IP代理? 动态单窗口IP代理,顾名思义&a…

OpenGL Texture C++ 预览Camera视频

OpenGL是一个图形API,并不是一个独立的平台。包含了一系列可以操作图形、图像的函数。基于Texture纹理强大的功能,本篇文章实现Android OpenGL Texture C 预览Camera视频流的功能。 项目github地址:https://github.com/wangyongyao1989/WyFFm…

动手学深度学习(pytorch)学习记录27-深度卷积神经网络(AlexNet)[学习记录]

目录 创建模型读取数据集训练AlexNet AlexNet 是由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 在 2012 年提出的深度卷积神经网络,它在当年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)中取得了显著的成绩,从而引起了深度…

15.3 JDBC数据库编程2

15.3.1 数据库访问步骤 使用JDBC API连接和访问数据库,一般分为以下5个步骤: (1) 加载驱动程序 (2) 建立连接对象 (3) 创建语句对象 (4) 获得SQL语句的执行结果 (5) 关闭建立的对象,释放资源 下面将详细描述这些步骤 15.3.2 加载驱动程序 要使…

计算机网络408考研 2022

https://zhuanlan.zhihu.com/p/695446866 1 1 1SDN代表软件定义网络。它是一种网络架构,旨在通过将网络控制平面从数据转发平面分离出来,从而实现网络的灵活性和可编程性。在SDN中,网络管理员可以通过集中式控制器 来动态管理网络流量&…

2024 年 8 月区块链游戏研报:用户增长与加密货币市场波动并存

作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics Games Research 页面 8 月,加密货币市场面临严峻挑战,比特币和以太币的价值都大幅下跌。比特币下跌了 9.3%,而以太坊的跌幅更为严重&#x…

代码随想录27期|Python|Day51|​动态规划|​115.不同的子序列|​583. 两个字符串的删除操作​|

115. 不同的子序列 本题是在原来匹配子序列的基础上增加了统计所匹配的子序列个数,也就是dp数组的定义和更新公式和原来的有所区别。 1、dp数组的定义 dp[i][j]表示以i-1和j-1为末尾的字符串中,给定字符串s包含目标字符串t的个数。注意这里不是长度。…

CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!

一、CTF简介 CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。…