二叉搜索树 (BST) 节点插入、查找、删除、获取最大值、最小值和中序遍历排序等功能
二叉搜索树 (BST) 实现总结
本程序实现了一个简单的二叉搜索树 (BST),支持节点插入、查找、删除、获取最大值、最小值和中序遍历排序等功能。以下是各部分的详细说明。
数据结构
节点定义
struct BinTreeNode {int data; // 节点存储的数据struct BinTreeNode* left; // 指向左子节点的指针struct BinTreeNode* right; // 指向右子节点的指针
};
函数定义
插入函数
void insert(BinTreeNode* &t, int x);
- 功能: 将新值
x插入到二叉搜索树中。 - 逻辑:
-
- 如果当前节点
t为NULL,则创建新节点并赋值。 - 否则根据
x与t->data的比较,递归地决定插入左子树或右子树。
- 如果当前节点
查找最小值和最大值
int Min(BinTreeNode* bst);
int Max(BinTreeNode* bst);
- 功能: 返回二叉搜索树中最小值和最大值。
- 逻辑:
-
- 最小值通过一直遍历左子树获取。
- 最大值通过一直遍历右子树获取。
中序遍历排序
void sort(BinTreeNode* t);
- 功能: 打印二叉搜索树的节点值,按升序排列。
- 逻辑:
-
- 递归访问左子树,打印当前节点,再递归访问右子树。
查询 BST
BinTreeNode* searchBST(BinTreeNode* t, int key);
- 功能: 查询树中是否存在值为
key的节点。 - 逻辑:
-
- 根据
key的值与当前节点的比较,决定递归访问左子树或右子树。
- 根据
删除节点
bool removeBST(BinTreeNode* t, int x);
- 功能: 删除值为
x的节点。 - 逻辑:
-
- 递归查找节点
t。 - 一旦找到,判断其子节点情况并处理:
- 递归查找节点
-
-
- 叶子节点: 直接释放。
- 单子节点: 将当前节点替换为其唯一的子节点并释放。
- 双子节点: 找到左子树的最大值,替换当前节点数据,并删除该最大节点。
-
主函数
int main() {int ar[] = {53, 17, 78, 9, 45, 65, 87, 23};int n = sizeof(ar) / sizeof(ar[0]);BinTreeNode* bst = NULL;for (int i = 0; i < n; i++) {insert(bst, ar[i]); // 插入数组中的每个元素}removeBST(bst, 53); // 删除值为 53 的节点return 0;
}
- 功能: 创建一个二叉搜索树并插入一组数据,然后删除指定节点。
- 逻辑:
-
- 使用数组
ar初始化树,插入每个元素。 - 调用
removeBST删除值为 53 的节点。
- 使用数组
可视化编译器
可视化编辑器 数据结构与算法 | 图码
相关文章:
二叉搜索树 (BST) 节点插入、查找、删除、获取最大值、最小值和中序遍历排序等功能
二叉搜索树 (BST) 实现总结 本程序实现了一个简单的二叉搜索树 (BST),支持节点插入、查找、删除、获取最大值、最小值和中序遍历排序等功能。以下是各部分的详细说明。 数据结构 节点定义 struct BinTreeNode {int data; // 节点存储的数…...
unity ps 2d animation 蛇的制作
一、PS的使用 1.打开PS 利用钢笔工具从下往上勾勒填充 2.复制图层,Ctrl T,w调为-100% 3.对齐图层并继续用钢笔工具进行三角勾勒 3.画眼睛,按U快捷键打开椭圆工具,按住Shift可以画圆,填充并复制图层对称。 4.画笔工具,打开小…...
39 C 语言枚举类型、枚举常量、枚举变量、枚举的遍历、枚举数组、枚举与 switch
目录 1 什么是枚举 2 定义枚举类型 2.1 语法格式 2.2 枚举元素的特点 2.3 案例演示 3 枚举变量 3.1 什么是枚举变量 3.2 定义枚举变量的多种方式 3.3 案例演示 1:标准版枚举类型 3.4 案例演示 2:简化版枚举类型 3.5 案例演示 3:匿…...
LabVIEW程序怎么解决 Bug?
在LabVIEW开发过程中,发现和解决程序中的Bug是确保系统稳定运行的关键环节。由于LabVIEW采用图形化编程方式,Bug的排查和处理与传统编程语言略有不同。以下是解决LabVIEW程序中Bug的常见方法和技巧,涵盖从问题发现到解决的多个步骤和角度&…...
AR智能眼镜之战:Meta vs Snap
随着增强现实(AR)技术的发展,各大科技公司都在争夺下一代计算平台的领先地位。Meta(前身为Facebook)和Snap作为其中的两个重要玩家,正在竞相开发能够提供沉浸式体验的AR智能眼镜。在这篇文章中,我们将深入探讨这两家公司可能采用的显示技术和用户体验,并分析它们各自的…...
Spring Boot 集成 Flowable UI 实现请假流程 Demo
博客主页: 南来_北往 系列专栏:Spring Boot实战 在现代企业应用中,工作流管理是一个至关重要的部分。通过使用Spring Boot和Flowable,可以方便地构建和管理工作流。本文将详细介绍如何在Spring Boot项目中集成Flowable UI,…...
毕业设计选题:基于ssm+vue+uniapp的医院管理系统小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
自动驾驶系列—线控悬架技术:自动驾驶背后的动力学掌控者
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
CTF刷题buuctf
[WUSTCTF2020]颜值成绩查询 拿到相关题目,其实根据功能和参数分析。需要传入一个学号然后进行针对于对应的学号进行一个查询,很可能就会存在sql注入。 其实这道题最难的点,在于过滤了空格,因此我们使用 /**/来过滤空格的限制。…...
Qt QWidget控件
目录 一、概述 二、Qwidget常用属性及函数介绍 2.1 enable 2.2 geometry 2.3 windowTitle 2.4 windowIcon 2.5 cursor 2.6 font 设置字体样式 2.7 toolTip 2.8 focusPolicy焦点策略 2.9 styleSheet 一、概述 widget翻译而来就是小控件,小部件。…...
如何通过Dockfile更改docker中ubuntu的apt源
首先明确我们有一个宿主机和一个docker环境,接下来的步骤是基于他们两个完成的 1.在宿主机上创建Dockerfile 随便将后面创建的Dockerfile放在一个位置,我这里选择的是 /Desktop 使用vim前默认你已经安装好了vim 2.在输入命令“vim Dockerfile”之后,…...
[C++][第三方库][jsoncpp]详细讲解
目录 1.介绍2.jsoncpp3.使用1.main.cc2.序列化3.反序列化 1.介绍 json是一种数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据json数据类型:对象、数组、字符串、数字 对象:使用{}括起来的表示一个对象数组:使用[…...
JavaScript中decodeURIComponent函数的深入解析与应用指南
在Web开发中,经常需要对URI(统一资源标识符)进行编码和解码,以保证数据传输的准确性和可靠性。decodeURIComponent函数是JavaScript中用于解码由encodeURIComponent函数或其他类似方法编码的部分统一资源标识符(URI&am…...
DMA方式为什么无需保护现场
DMA(Direct Memory Access)方式无需保护现场的原因主要与其工作原理和硬件设计有关。以下是对这一问题的详细解释: DMA工作原理 DMA是一种通过硬件直接在内存和外设之间传输数据的技术,无需CPU的介入。在DMA传输过程中ÿ…...
区块链可投会议CCF C--FC 2025 截止10.8 附录用率
Conference:Financial Cryptography and Data Security (FC) CCF level:CCF C Categories:network and information security Year:2025 Conference time:14–18 April 2025, Miyakojima, Japan 录用率࿱…...
springboot系列--web相关知识探索四
一、前言 web相关知识探索三中研究了请求中所带的参数是如何映射到接口参数中的,也即请求参数如何与接口参数绑定。主要有四种、分别是注解方式、Servlet API方式、复杂参数、以及自定义对象参数。web相关知识探索三中主要研究了注解方式以及Servlet API方式。本次…...
在PyQt5中,清空一个QFrame中的所有控件
在PyQt5中,如果你想要清空一个QFrame中的所有控件,你需要遍历该QFrame的布局(假设你已经在其中添加了一个布局,比如QVBoxLayout或QHBoxLayout),并从布局中移除所有的控件。由于直接从布局中移除控件并不会立…...
SpringBoot实现:校园资料分享平台开发指南
1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…...
Redis篇(缓存机制 - 基本介绍)(持续更新迭代)
目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…...
引领5G驱动的全球数字营销革新:章鱼移动广告全球平台的崛起
引领5G驱动的全球数字营销革新:章鱼移动广告全球平台的崛起 作为章鱼移动广告平台的营销战略顾问,黄珍珍通过她在市场营销、品牌推广、技术整合等多方面的丰富经验,成功推动了这一平台在全球广告市场的崛起。她不仅为平台的国际化扩展奠定了基…...
CircuitJS1:浏览器中的电子电路仿真神器完全指南
CircuitJS1:浏览器中的电子电路仿真神器完全指南 【免费下载链接】circuitjs1 Electronic Circuit Simulator in the Browser 项目地址: https://gitcode.com/gh_mirrors/ci/circuitjs1 想要学习电子电路却苦于没有实验设备?需要验证电路设计却不…...
告别文档踩坑:手把手教你用OkHttp和Gson解析OneNET API返回的复杂JSON数据
告别文档踩坑:手把手教你用OkHttp和Gson解析OneNET API返回的复杂JSON数据 在Android开发中,处理网络请求和JSON数据解析是每个开发者都必须掌握的基本技能。然而,当面对像OneNET这样的物联网平台返回的复杂嵌套JSON结构时,即使是…...
顶伯在线语音工具背后的技术力量:AI语音合成与深度学习解析
顶伯在线语音工具背后的技术力量在人工智能浪潮中,语音交互正成为人机沟通的核心方式。顶伯作为行业领先的在线语音工具,凭借自主研发的深度学习架构,将文字转化为高度自然的语音,广泛应用于有声阅读、智能客服、教育辅助等领域。…...
Mi-Create:零基础打造小米手表个性表盘的终极可视化神器
Mi-Create:零基础打造小米手表个性表盘的终极可视化神器 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 你是否厌倦了小米手表上那些千篇一律的官方…...
模型量化对 Agent 推理速度与质量的影响
模型量化对 Agent 推理速度与质量的影响 引言 在人工智能领域快速发展的今天,大型语言模型(LLM)和基于这些模型构建的智能体(Agent)系统正变得越来越普及。然而,这些模型的规模和复杂性也带来了显著的计算挑战。模型量化作为一种优化技术,通过…...
6 个 AI Agent Skill 实战推荐:每天省出 2 小时的自动化方案
引言Agent 能帮我们做的事越来越多 -- 写文案、做封面、盯数据、找选题。但很多人装上 Agent 之后发现,它除了聊天和写几段文案,好像什么也干不了。问题不在 Agent。就像刚买回来的手机,没装 App 之前就是块砖。Agent 出厂自带的能力有限&…...
Kettle 9.3 下载安装全攻略:从官网变动的坑到Hadoop Shims的正确配置
Kettle 9.3 下载安装全攻略:从官网变动的坑到Hadoop Shims的正确配置 如果你最近尝试下载Kettle 9.3,可能会发现一个令人困惑的现象:按照老教程访问SourceForge上的Pentaho项目页面,却找不到熟悉的下载按钮。这不是你的问题&#…...
打破iOS修改壁垒:H5GG技术架构与实战路径全解析
打破iOS修改壁垒:H5GG技术架构与实战路径全解析 【免费下载链接】H5GG an iOS Mod Engine with JavaScript APIs & Html5 UI 项目地址: https://gitcode.com/gh_mirrors/h5/H5GG 在iOS生态中,游戏与应用修改一直被视为技术门槛较高的领域&…...
5分钟快速上手Vue FastAPI Admin:现代化前后端分离管理平台完整指南
5分钟快速上手Vue FastAPI Admin:现代化前后端分离管理平台完整指南 【免费下载链接】vue-fastapi-admin ⭐️ 基于 FastAPIVue3Naive UI 的现代化轻量管理平台 A modern and lightweight management platform based on FastAPI, Vue3, and Naive UI. 项目地址: h…...
Nintendo Switch游戏备份终极指南:用nxdumptool轻松提取你的游戏收藏
Nintendo Switch游戏备份终极指南:用nxdumptool轻松提取你的游戏收藏 【免费下载链接】nxdumptool Generates XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket dumps from Nintendo Switch gamecards and installed SD/eMMC titles. 项目地址: https://gitcode.com/…...
