数据结构之排序二叉树

排序二叉树

基本概念

二叉树是一种从上往下的树状结构的数据结构,从根节点开始每个节点最多有两个子节点,左边的为左子节点,右边的为右子节点。

排序二叉树–有顺序,且没有重复元素的二叉树。顺序为:

对每个节点而言:

1)如果左子树不为空,则左子树上的所有节点都小于该节点;

2)如果右子树不为空,则右子树上的所有节点都大于该节点;

在这里插入图片描述

如图,根节点为5,左边的节点都大于5,右边的节点都小于5。

插入操作

首先要从根节点开始往下找到自己要插入的位置(即新节点的父节点);具体流程是:新节点与当前节点比较,如果相同则表示已经存在且不能再重复插入;如果小于当前节点,则到左子树中寻找,如果左子树为空则当前节点为要找的父节点,新节点插入到当前节点的左子树即可;如果大于当前节点,则到右子树中寻找,如果右子树为空则当前节点为要找的父节点,新节点插入到当前节点的右子树即可。

在这里插入图片描述

删除操作

删除操作主要分为三种情况,即要删除的节点无子节点,要删除的节点只有一个子节点,要删除的节点有两个子节点。

  1. 对于要删除的节点无子节点可以直接删除,即让其父节点将该子节点置空即可。
  2. 对于要删除的节点只有一个子节点,则替换要删除的节点为其子节点。
  3. 对于要删除的节点有两个子节点,则首先找该节点的替换节点(即右子树中最小的节点),接着替换要删除的节点为替换节点,然后删除替换节点。

image-20240111210530459

查询操作

查找操作的主要流程为:先和根节点比较,如果相同就返回,如果小于根节点则到左子树中递归查找,如果大于根节点则到右子树中递归查找。因此在排序二叉树中可以很容易获取最大(最右最深子节点)和最小(最左最深子节点)值。

遍历操作

排序二叉树可以方便的按序遍历,用递归的方式。如下图的例子,先访问根节点的左子树,一直到最左边的节点–1,1没有右子树

,返回上一层,访问3,然后访问3的右子树,4没有左子树,所以访问4,然后4的右子树6,以此类推。1–3–4–6–7–8–9

在这里插入图片描述

不用递归的方式,也可以实现按序遍历:第一个节点为最左边的节点,从第一个节点开始,依次找后继节点,找其后继节点的算法为:

1)如果该节点有右子节点,则后继节点为右子树中的最小节点;

2)如果该节点无右子节点,则后继节点为父节点或者某个祖先节点,从当前节点往上找,如果它是父节点的右孩子,则继续找父节点,直到它不是右孩子或父节点为空,第一个非右孩子节点的父节点就是后继节点,如果找不到这样的祖先节点,则后继为空,遍历结束。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

APP流量变现——4项关键指标决定了APP混合变现的收入

APP流量变现的方式有很多种,主要的可以分为IAA(广告)收入、IAP(用户应用内付费)收入、订阅收入、单次买断收入。这里主要围绕当前流行的混合变现模式,即广告收入(IAA)应用内付费&…

探索 hasOwnProperty:处理对象属性的关键(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

spring cloud之集成sentinel

写在前面 源码 。 本文一起看下spring cloud的sentinel组件的使用。 1:准备 1.1:理论 对于一个系统来说,最重要的就是高可用,那么如何实现高可用呢?你可能会说,集群部署不就可以了,但事实并…

window11后台服务优化记录

这里:\WINDOWS\xxx\svchost.exe -k netsvcs -p 信号聚合器服务,用于根据时间、网络、地理位置、蓝牙和 CDF 因素评估信号。支持的功能包括设备解锁、动态锁定和动态 MDM 策略 参考: 优化参考v1

数字化发展助力青少年阅读回归“慢节奏”

近日,《2024年学前及中小学生寒假分年级阅读推荐书目》发布,正尝试引领青少年阅读在短视频时代回归“慢节奏”。该推荐书目针对每个学龄孩子的学习特点、认知特点、心理特点进行推荐,旨在培养孩子的深度思考能力。 在数字化时代,…

Docker的介绍及安装基本操作命令

前言 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱…

K8S 存储卷

意义:存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制器创建的pod,delete相当于重启,容器的状态也会回复到初始状态 一旦回到初始状态,所有的后天编辑的文件…

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CNN-BiLSTM-KDE多…

显示器新赛道Type-C接口

如果把主机比作大脑,那显示器就是眼睛,没有眼睛,大脑再强大也发挥不出效果,所以显示器作为电脑最重要的输出设备,有着举足轻重的地位,可以说在生活中处处都有显示器的影子。其实显示器的历史也是科技发展史…

谈谈Spring Bean

一、IoC 容器 IoC 容器是 Spring 的核心,Spring 通过 IoC 容器来管理对象的实例化和初始化(这些对象就是 Spring Bean),以及对象从创建到销毁的整个生命周期。也就是管理对象和依赖,以及依赖的注入等等。 Spring 提供…

GPT 商店强势来袭,人人都要有自己的 GPTs

作者:苍何,前大厂高级 Java 工程师,阿里云专家博主,CSDN 2023 年 实力新星,土木转码,现任部门技术 leader,专注于互联网技术分享,职场经验分享。 🔥热门文章推荐&#xf…

AlexNet论文翻译与精读

1:该论文解决了什么问题? 图像分类问题 2:该论文的创新点? 1:使用了大的深的卷积神经网络进行图像分类; 2:采用了两块GPU进行分布式训练; 3:采用了Relu进行训练加速; 4:采用局部归一化提高模型泛化能…

DB2除法的小数位问题(四舍五入问题)以及其他常用的函数

DB2除法的小数位问题(四舍五入问题)以及其他常用的函数 1. DB2取第一条数据2. DB2 中指定值排序2.1 使用case when2.2 使用decode函数 3. 拼接函数4. 强制转换类型——cast函数5. DB2除法的小数位问题(四舍五入问题)5.1 关于round…

03.C++内存管理笔记

1、C/C内存分布 ①内存分那么多区的原因:不同的数据,有不同的存储需求,各区域满足了不同的需求。 ②存放: 临时变量等临时用的变量:栈区; 动态申请的变量:堆区; 全局变量和静态变…

计算机图形学作业:四阶Bezier曲线、三阶 B 样条曲线

3. 请给出四阶Bezier曲线的矩阵表示形式,并作图绘制出一段四阶Bezier 曲线,要求给出控制点的坐标。(共 20 分) 四阶Bezier曲线的矩阵表示形式为: P(t)=P0P1P2P3P41-46-4104-1212-4006-1260004-4000011ttt3t4 给出控制点为: P0(578,389),P1(1018,175),P2(1442,373),P3(1…

【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 在上次学习的内容中,我们讲解了: 使用DDL语句来操作数据库以及表结构(数据库设计&…

构建labelstudio镜像的时候,报错node:18,如何解决

解决方案: vi Dockerfile # syntaxdocker/dockerfile:1.3 FROM --platformlinux/amd64 node:18.16-bullseye-slim AS frontend-builder18改成 18.16-bullseye-slim

CodeWave智能开发平台--03--目标:应用创建--09供应商详情页面下

摘要 本文是网易数帆CodeWave智能开发平台系列的第13篇,主要介绍了基于CodeWave平台文档的新手入门进行学习,实现一个完整的应用,本文主要完成09供应商详情页面下主营产品展示及权限管理 CodeWave智能开发平台的13次接触 CodeWave参考资源…

UE 引擎工具笔记

2023虚幻技术分享会视频 1.2023年虚幻引擎最新功能和技巧 [UFSH2023]2023年虚幻引擎最新功能和技巧 | Chris Murphy Epic Games_哔哩哔哩_bilibili 推荐细看下.总结了UE5的功能大概 2.调试技巧 [UFSH2023]总有一个你不知道的虚幻引擎调试技巧 | 陈拓 Epic Games_哔哩哔哩_…

2024.1.11 Kafka 消息队列,shell命令,核心原理

目录 一 . 消息队列 二. Kafka 三 . 启动命令 四 . Kafka的Shell 命令 五 . Kafka的核心原理 1. Topic的分区和副本机制 2 . 消息存储机制 和 查询机制 3. Kafka中生产者数据分发策略 六 . Kafka 之所以具有高速的读写性能,主要有以下几个原因 七. 笔记…