C : DS二叉排序树之删除

Description

给出一个数据序列,建立二叉排序树,并实现删除功能

对二叉排序树进行中序遍历,可以得到有序的数据序列

Input

第一行输入t,表示有t个数据序列

第二行输入n,表示首个序列包含n个数据

第三行输入n个数据,都是自然数且互不相同,数据之间用空格隔开

第四行输入m,表示要删除m个数据

从第五行起,输入m行,每行一个要删除的数据,都是自然数

以此类推输入下一个示例

Output

第一行输出有序的数据序列,对二叉排序树进行中序遍历可以得到

从第二行起,输出删除第m个数据后的有序序列,输出m行

以此类推输出下一个示例的结果

Sample

#0

Input

1
6
22 33 55 66 11 44
3
66
22
77

Output

11 22 33 44 55 66 
11 22 33 44 55 
11 33 44 55 
11 33 44 55 

在这里插入图片描述

AC代码

#include <iostream>
using namespace std;// 二叉排序树节点
struct TreeNode {int data;TreeNode* left;TreeNode* right;TreeNode(int val) : data(val), left(nullptr), right(nullptr) {}
};// 插入节点到二叉排序树
TreeNode* insert(TreeNode* root, int data) {if (root == nullptr) {return new TreeNode(data);}if (data < root->data) {root->left = insert(root->left, data);}else {root->right = insert(root->right, data);}return root;
}// 寻找最小值节点
TreeNode* findMin(TreeNode* node) {//不断往左树找,直到空为止就是最小的while (node->left != nullptr) {node = node->left;}return node;
}// 删除节点
TreeNode* remove(TreeNode* root, int data) {if (root == nullptr) {return root;}// 不断寻找结点if (data < root->data) {root->left = remove(root->left, data);}else if (data > root->data) {root->right = remove(root->right, data);}else {// 节点找到//结点有一个或没有的情况if (root->left == nullptr) {//左手空,直接把右手接上TreeNode* temp = root->right;delete root;return temp;}else if (root->right == nullptr) {TreeNode* temp = root->left;delete root;return temp;}// 有两个子节点的情况// 去右手找到最小的结点TreeNode* temp = findMin(root->right);//用这个右手上找到的最小的来替换当前结点root->data = temp->data;//替换完了之后记得把temp删掉root->right = remove(root->right, temp->data);}return root;
}// 中序遍历并输出结果
void inorderTraversal(TreeNode* root) {if (root != nullptr) {inorderTraversal(root->left);cout << root->data << " ";inorderTraversal(root->right);}
}int main() {int t;cin >> t;for (int i = 0; i < t; ++i) {int n;cin >> n;TreeNode* root = nullptr;for (int j = 0; j < n; ++j) {int data;cin >> data;root = insert(root, data);}inorderTraversal(root);cout << endl;int m;cin >> m;for (int k = 0; k < m; ++k) {int deleteData;cin >> deleteData;root = remove(root, deleteData);inorderTraversal(root);cout << endl;}}return 0;
}

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

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

相关文章

Python 元组完全指南 1

元组用于在单个变量中存储多个项目。 mytuple ("apple", "banana", "cherry") 元组是 Python 中的 4 种内置数据类型之一&#xff0c;用于存储数据集合&#xff0c;另外还有列表、集合和字典&#xff0c;它们都具有不同的特性和用途。元组是有…

分布式锁解决方案之数据库乐观锁实现的分布式锁

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 分布式锁解决方案之数据库乐观锁实现的分布式锁 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目…

cpulimit设计理念及其思考

背景 前几天&#xff0c;同事咨询了我一个问题&#xff1a;IO占用能和cpu使用率那样&#xff0c;有方法来控制吗&#xff1f;这个问题的背景是因为客户提了两个需求&#xff0c;如下&#xff1a; 说实话&#xff0c;针对这两点需求&#xff0c;我的第一反应是有一点思路&#…

Linux 下 GCC 编译共享库控制导出函数的方法

通过一些实际项目的开发&#xff0c;发现这样一个现象&#xff0c;在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL&#xff08;动态链接库&#xff09;中哪些函数可以导出&#xff0c;暴露给其他程序链接使用&#xff0c;哪些函数是 DLL 内部自己使用&#x…

复习linux——ssh服务

SSH服务 ssh&#xff1a;安全的远程登录&#xff0c;实现加密通信&#xff0c;代替传统的telnet协议 具体的软件实现 openssh&#xff1a;ssh协议的开源实现 dropbear&#xff1a;另一个ssh协议的开源项目的实现 ssh公钥交换原理 客户端发起连接请求——客户端得到服务端的公…

PIC单片机项目(5)——基于PIC16F877A的多功能防盗门

1.功能设计 本次设计的功能如下&#xff1a;如果红外对管检测到有人经过&#xff0c;LCD1602可以显示&#xff0c;我设计的是显示字符串“someone”。 如果有人强行破门&#xff0c;FSR402压力传感器会检测到压力过大&#xff0c;然后触发蜂鸣器报警&#xff0c;LCD1602也显示“…

物奇平台消息发收功能实现

物奇平台消息发收功能实现 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 1 外设中断消息发送方法

实验4.2 默认路由和浮动静态路由的配置

实验4.2 默认路由和浮动静态路由的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.路由器的基本配置。2.配置默认路由&#xff0c;实现全网互通。3.配置浮动静态路由&#xff0c;实现链路备份。 六、任务验收七、任务小结八、知识链接1&#xff0e;默认路…

SpringBoot整合SpringDataJpa QueryDSL和原生态SQL

1.导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…

【1) 40个powershell命令,掌握它们让你成为新一代命令行大神 2) mkdir, rmdir commands】

40 commands of poershell & mkdir, rmdir I) 40个powershell命令&#xff0c;掌握它们让你成为新一代命令行大神1.1&#xff09; URL1.2&#xff09;Basic 40 commands of powershell1.2.1) get-command1.2.1.1&#xff09;describe1.2.1.2&#xff09;mkdir dir_name, rm…

2023 英特尔On技术创新大会直播 |AI小模型更有性价比

前言&#xff1a; 今年是引爆AI的一年&#xff0c;从幼儿园的小朋友到80岁的老奶奶都认识AI&#xff0c;享受AI带来的便捷&#xff0c;都在向市场要智能&#xff0c;但AI的快速发展离不开底层硬件设施的革新。 英特尔是全球知名的半导体公司&#xff0c;专注于计算机处理器和芯…

pip基本操作指令大全

以下是一些pip的基本操作指令及其用途&#xff1a; 安装包&#xff1a; pip install package_name 安装指定的Python包。如果你想安装特定版本&#xff0c;可以这样指定&#xff1a; pip install package_nameversion_number 升级包&#xff1a; pip install --upgrade pack…

JavaScript 从基础到进阶 02:控制流程与函数

控制流程与函数 条件语句1. if语句2. else if语句3. switch语句 循环语句1. for循环2. while循环3. do...while循环 控制流程的关键概念1. break语句2. continue语句3. 标签&#xff08;label&#xff09; 总结函数的定义1. 函数声明2. 函数表达式 函数的调用函数的参数形参和实…

Goby 漏洞发布| Apusic 应用服务器 createDataSource 远程代码执行漏洞

漏洞名称&#xff1a;Apusic 应用服务器 createDataSource 远程代码执行漏洞 English Name&#xff1a;Apusic Application Server loadTree Remote Code Execution Vulnerability CVSS core: 9.8 影响资产数&#xff1a; 31410 漏洞描述&#xff1a; 金蝶 Apusic 应用服务…

死锁的原理、产生条件及避免死锁的方法,银行家算法的简介和实现

死锁的原理及避免死锁的方法 死锁的原理 死锁是指在多个进程或线程之间&#xff0c;由于彼此互相持有对方所需资源而无法继续执行的情况。死锁发生的原因通常是由于多个进程同时请求资源&#xff0c;但由于资源分配不当或者竞争条件等问题&#xff0c;导致彼此之间陷入僵局无…

第三节TypeScript 基础类型

1、typescript的基础类型 如下表&#xff1a; 数据类型 关键字 描述 任意类型 any 生命any的变量可以赋值任意类型的值 数字类型 number 整数或分数 字符串类型 string 使用单引号&#xff08;‘’&#xff09;或者双引号&#xff08;“”&#xff09;来表示字符串…

企业数字化转型如何影响企业 ESG 表现 —来自中国上市公司的证据(数据复现+代码)

数据来源&#xff1a;自主整理 时间跨度&#xff1a;2010-2020年 数据范围&#xff1a;中国沪深 A 股上市公司 数据指标&#xff1a; 类型 变量 符号 变量定义 证券代码 stkcd 年份 year 股票简称 name 被解释变量 ESG ESG 华证ESG季度评级赋值1-9分&#xff0c;取…

xxl-job 分布式调度学习笔记

1.概述 1.1什么是任务调度 业务场景&#xff1a; 上午10点&#xff0c;下午2点发放一批优惠券 银行系统需要在信用卡到期还款日的前三天进行短信提醒 财务系统需要在每天凌晨0:10分结算前一天的财务数据&#xff0c;统计汇总 不同系统间的数据需要保持一致&#xff0c;这时…

flask 之上传与下载

from flask import Flask, render_template, request, send_from_directory, redirect, url_for import osapp Flask(__name__)# 上传文件存储路径 UPLOAD_FOLDER uploads app.config[UPLOAD_FOLDER] UPLOAD_FOLDERapp.route(/) def index():# 确保上传文件夹存在if not os.…

【工业智能】音频信号相关场景

【工业智能】音频信号相关场景 DcaseDcase introduction&#xff1a;dcase2024有10个主题的任务&#xff1a; ASD硬件设备产品商 方法制造业应用场景 zenodo音频事件检测 与计算机视觉CV相对应&#xff0c;计算机听觉computer audition&#xff0c;简称CA。 Dcase 这里推荐一个…