排序二叉树c++

排序二叉树c++

    • 分类一
    • 分类二 单侧有孩子
    • 分类三 双侧有孩子
      • 1左孩子没有右孩子
      • 2左孩子有右孩子

实际删除节点的过程中移花截木,把数据交换,然后递归。

#include <iostream>
using namespace std;
struct BiTree{int data;BiTree *left;BiTree * right;BiTree(int x){data=x;left=right=NULL;}~BiTree(){if(left) delete left;if(right) delete right;}void add(BiTree* t){if(t->data<data)if(left)left->add(t);elseleft=t;elseif(right)right->add(t);elseright=t;}void in_order(){if(left) left->in_order();cout<<data<<" ";if(right) right->in_order();}BiTree* del(){// 分类一,叶子节点if(left==NULL && right==NULL){delete this;return NULL;}//分类二,只有右子树if(left==NULL){BiTree* t=right;right=NULL;delete this;return t;}//分类二,只有左子树if(right==NULL){BiTree* t=left;left=NULL;delete this;return t;}//分类三 左孩子没有右孩子if(left->right==NULL){data=left->data;left=left->del();return this;}//分类三 左孩子有右孩子BiTree* p=left;while(p->right->right) p=p->right;data=p->right->data;p->right=p->right->del();return this;}
};
int main(){int data[]={12,3,7,16,2,18,9,7,2,5,11};BiTree* root=new BiTree(data[0]);for(int i=1;i<sizeof(data)/sizeof(int);i++)root->add(new BiTree(data[i]));root->in_order();cout<<endl;root=root->del();root->in_order();cout<<endl;return 0;
}

#分类删节点

分类一

  • 删叶子结点
删除

分类二 单侧有孩子

  • 左侧有孩子
删除
左孩
  • 右侧有孩子
删除
右孩

分类三 双侧有孩子

1左孩子没有右孩子

B
C
D

2左孩子有右孩子

B
C
D
E
G
H

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

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

相关文章

网络安全测评技术与标准

网络安全测评是评估信息系统、网络和应用程序的安全性&#xff0c;以发现潜在的漏洞和威胁&#xff0c;并确保系统符合安全标准和政策的过程。以下是常见的网络安全测评类型&#xff1a; 1. 渗透测试&#xff08;Penetration Testing&#xff09; 描述&#xff1a;通过模拟真…

Mysql-常见DML-DQL-语句语法用法总结

1、常见DML语句 1.1 INSERT语句 说明&#xff1a;将数据插入到数据库表中。 INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 实例&#xff1a;添加C罗信息到数据库表中 insert into employee (ID, name, gender, entrydate, age) values …

KUKA机器人维修保养消除报警

在使用KUKA机器人时&#xff0c;有时候会遇到示教器信息栏出现“基本检查到期”的信息&#xff0c;这就提示该机器到了基本保养时间了&#xff0c;需要进行保养。 一、报警信息和保养周期&#xff1a; KUKA机器人在使用超过一定保养周期后会出现“基本检查到期 / 中央手动保…

技术分析报告:StorageReview实验室打破π计算世界纪录

StorageReview实验室团队利用先进的计算系统&#xff0c;成功将π计算至202.112.290.000.000位&#xff0c;刷新了自己之前保持的105万亿位的世界纪录。这一成就突显了现代高性能计算&#xff08;HPC&#xff09;和精心设计的商用硬件平台的卓越能力。 关键技术组件&#xff1a…

【Unity navigation面板】

【Unity navigation面板】 Unity的Navigation面板是一个集成在Unity编辑器中的界面&#xff0c;它允许开发者对导航网格&#xff08;NavMesh&#xff09;进行配置和管理。 Unity Navigation面板的一些关键特性和功能&#xff1a; 导航网格代理&#xff08;NavMesh Agent&…

Python爬虫获取视频

验证电脑是否安装python 1.winr输入cmd 2.在黑窗口输入 python.exe 3.不是命令不存在就说明python环境安装完成 抓取快手视频 1.在phcharm应用中新建一个项目 3.新建一个python文件 4.选择python文件,随便起一个名字后按回车 5.安装requests pip install requests 6.寻找需要的…

Beats:使用 Filebeat 从 Python 应用程序中提取日志

本指南演示了如何从 Python 应用程序中提取日志并将其安全地传送到 Elasticsearch Service 部署中。你将设置 Filebeat 来监控具有标准 Elastic Common Schema (ECS) 格式字段的 JSON 结构日志文件&#xff0c;然后你将在 Kibana 中查看日志事件发生的实时可视化。虽然此示例使…

【Python实战因果推断】23_倾向分3

目录 Propensity Score Matching Inverse Propensity Weighting Propensity Score Matching 另一种控制倾向得分的常用方法是匹配估计法。这种方法搜索具有相似可观测特征的单位对&#xff0c;并比较接受干预与未接受干预的单位的结果。如果您有数据科学背景&#xff0c;您可…

Python使用matplotlib绘制图像时,中文图例或标题无法正常显示问题

Python使用matplotlib绘制图像时&#xff0c;中文图例或标题无法显示问题解决方法 一、问题描述二、解决方法 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、问题描述 Matplotlib库是Python中经常使用的绘图工…

【设计模式之美】策略模式实践:不同大小(采用不同的策略)文件进行排序

文章目录 一. 问题与解决思路二. 代码实现与分析1. 业务代码逻辑的架子2. 代码重构&#xff1a;使用策略模式来解耦代码逻辑 三. 进一步&#xff1a;满足开闭原则:使用注解或配置文件 设计原则和思想其实比设计模式更加普适和重要&#xff0c;掌握了代码的设计原则和思想&#…

如何注册微信公众号

如何注册微信公众号 如何注册一个微信公众号 &#x1f60a;&#x1f4f1;摘要引言正文内容1. 准备工作内容定位和受众群体公众号名称和头像 2. 网页注册流程第一步&#xff1a;访问微信公众平台第二步&#xff1a;选择账户注册类型第三步&#xff1a;填写基本信息第四步&#x…

ChatGLM2-6B 运行代码解读(二)

目录 一、cli_demo.py 解读 3.1 transformers 3.2 AutoTokenizer.from_pretrained 函数 3.3 AutoModel.from_pretrained 函数 3.4 model.eval() 函数

树型结构数据存储实践

很多业务场景会遇到树形结构的数据&#xff0c;如公司的人员职级树、行政区划树等。 使用类似MySQL的数据库进行存储&#xff0c;需要将树形结构&#xff08;二维&#xff09;存储到行格式&#xff08;一维&#xff09;的db中。 本文介绍了树型结构数据存储的三种方式&#xf…

华为HCIP Datacom H12-821 卷27

1.单选题 IS-IS中地址的总长度最少为多少Byte? A、20 B、2 C、16 D、8 正确答案:D 解析: 地址总长度最长为13+6+1=20Byte,最短为1+6+1=8Byte。 2.多选题 下面哪些路由协议支持通过命令配置发布

Java视频点播网站

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

[FreeRTOS 基础知识] 事件组 概念

文章目录 事件组 定义事件组 基本原理 事件组 定义 在实时操作系统&#xff08;RTOS&#xff09;中&#xff0c;事件组是一种用于任务间通信和同步的机制。事件组允许多个任务等待一个或多个事件的组合&#xff0c;当这些事件的组合满足特定条件时&#xff0c;任务可以被唤醒。…

vb.netcad二开自学笔记2:认识vs编辑器

认识一下宇宙第一编辑器的界面图标含义还是很重要的&#xff0c;否则都不知道面对的是什么还怎么继续&#xff1f; 一、VS编辑器中常见的图标的含义 变量 长方体&#xff1a;变量 局部变量 两个矩形块&#xff1a;枚举 预定义的枚举 紫色立方体&#xff1a;方法 橙色树状结构…

优惠券管理系统设计

优惠券管理系统的设计旨在高效地创建、分发、追踪和分析优惠券的使用情况&#xff0c;以促进销售、增强客户忠诚度并提升营销活动的效果。以下是设计一个高效优惠券管理系统的关键要素和步骤&#xff1a; 1. 需求分析与目标设定 明确业务目标&#xff1a;确定优惠券使用的具体…

shell中不常见的命令

** iconv 功能&#xff1a;将文件内容字符集转成其他字符集 常用选项&#xff1a; -l 列出所有已知的字符集 -f 原始文本编码 -t 输出编码 -o 输出到文件 -s 关闭警告 将文件内容转换 UTF8&#xff1a; # iconv -f gbk -t utf8 old.txt -o new.txt 将 csv 文件转换 GBK&…

直播电商如何实现分账?

随着直播电商的兴起&#xff0c;越来越多的企业开始选择通过直播平台来推广自己的产品。而在直播电商中&#xff0c;主播是非常重要的一环&#xff0c;他们的表现直接影响到产品的销售情况。因此&#xff0c;如何与主播合作&#xff0c;让他们更加积极地推广产品&#xff0c;成…