数据结构--二叉树收尾

news2024/12/24 11:43:12

1.二叉树销毁

运用递归方法

分类:

根节点+左子树+右子树(一般都是这个思路,不断进行递归即可)

选择方法(分析):

前序:如果直接销毁根就无法找到左子树右子树

中序:也会导致丢失其他数据

因此需要选择后序(遇到根不销毁,先销毁左子树,左边销毁完再销毁右子树,最后销毁根)

//二叉树销毁
void TreeDestory(BTNode* root);
{
	//首先判断是否为空
	if (root == NULL)
		return;
	TreeDestory(root->left);
	TreeDestory(root->right);
	//释放节点
	free(root);
}

2.层序遍历(一种BFS)

DFS:例如前中后序。

BFS:例如层序遍历

以根为起点然后一层一层向下走。

逻辑:上一层带下一层

层序都是用队列来进行辅助完成的。(属于队列的运用)

队列实现图:

出队头,空不进。

  

代码实现

1.依靠队列来完成因此首先需要将队列的头文件源文件实现添加进来

将其复制过来

粘贴进去就可。

注意:1.队列里边应该存节点还是存值?

首先不能存值如果只有值的话肯定通过一个数据无法找到其他数据

存节点又占用太大,因此可以存节点的指针

2.typedef后面不用BTNode*

如果用BTNode*,编译器不认识,因此需要用原类型,先这样理解就好

//2.层序遍历 
#include"Queue.h"
void TreeLevelOrder(BTNode* root)
{
	Queue q;//定义一个队列
	QueueInit(&q);
	if (root)
		QueuePush(&q, root);
	while (!QueueEmpty(&q))//判空如果不是空的话就继续,
	{
		//先取对头数据
		BTNode* front = QueueFront(&q)
			QueuePop(&q);
		printf("%d", front->data);//打印出的是数字
		if (front->left)
			QueuePush(&q, front->left);
		if (front->right)
			QueuePush(&q, front->right);
	}
	QueueDestroy(&q);
}

注意:

之所以QueuePop(&q);后还可以     printf("%d", front->data);是因为Pop掉的是队列的头节点,但是树的依然存在不影响

     
  已经传给front了,所以依然可以找到。

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

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

相关文章

Linux|背景 环境搭建

目录 一、简述Linux发展史 1.1计算机的诞生 1.2操作系统的诞生 1.3Linux操作系统开源 1.4Linux发行版本 二、搭建Linux环境 三、使用shell远程登入到Linux 一、简述Linux发展史 可能大家未听说过Linux,或者只知道它是一个搭配在计算机上的操作系统&#xff0…

详细谈谈负载均衡的startupProbe探针、livenessProbe探针、readnessProbe探针如何使用以及使用差异化

文章目录 startupProbe探针startupProbe说明示例配置参数解释 使用场景说明实例——要求: 容器在8秒内完成启动,否则杀死对应容器工作流程说明timeoutSeconds: 和 periodSeconds: 参数顺序说明 livenessProbe探针livenessProbe说明示例配置参数解释 使用…

OpenCV MEI相机模型(全向模型)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 对于针孔相机模型,由于硬件上的限制(如进光量等),他的视野夹角往往有效区域只有140度左右,因此就有研究人员为每个针孔相机前面再添加一个镜片,如下所示: 通过折射的方式增加了相机成像的视野,虽然仍然达不…

RequestContextHolder多线程获取不到request对象

RequestContextHolder多线程获取不到request对象,调用feign接口时,在Feign中的RequestInterceptor也获取不到HttpServletRequest问题解决方案。 1.RequestContextHolder多线程获取不到request对象 异常信息,报错如下: 2024-07-0…

光学传感器图像处理流程(一)

光学传感器图像处理流程(一) 1. 处理流程总览2. 详细处理流程2.1. 图像预处理2.1.1. 降噪处理2.1.2. 薄云处理2.1.3. 阴影处理 2.2. 辐射校正2.2.1. 辐射定标2.2.2. 大气校正2.2.3. 地形校正 2.3. 几何校正2.3.1. 图像配准2.3.2. 几何粗校正2.3.3. 几何精…

深入了解线程锁的使用及锁的本质

文章目录 线程锁的本质局部锁的使用 锁的封装及演示线程饥饿问题 线程加锁本质可重入和线程安全死锁问题 根据前面内容的概述, 上述我们已经知道了在linux下关于线程封装和线程互斥,锁的相关的概念, 下面就来介绍一下关于线程锁的一些其他概念. 线程锁的本质 当这个锁是全局的…

5.更多

发现一个项目与 MkDocs 类似的项目 PyMdown 拓展文档 ,等待探索。 1.排版模仿 以下网站使用 MkDocs 构建 Material for MkDocs 的美化 - Charles Les Notebook (charleschile.com) Documentation - Home Assistant (home-assistant.io) Godot Docs – master bra…

什么是数据同步服务RSYNC?

大家好呀!这里是码农后端。今天来介绍一下数据同步服务RSYNC,作为Linux/Unix系统中远程或本地复制同步(复制)文件和目录最常用的命令,相比于scp命令,其具有增量备份、数据同步时保持文件的原有属性等优点。…

[激光原理与应用-102]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 6 - 激光焊接系统的组成

目录 一、激光焊接系统的组成概述 1.1、核心部件 1.2、焊接执行部件 1.3、辅助系统 1.4、控制系统 1.5、其他辅助设备 二、激光器 2.1 按出光类型分 1. 脉冲激光器 2. 连续激光器 3. 准连续激光器(QCW) 4. 其他常见激光器 5. 应用领域 2.2…

CentOS6禁止锁屏

在电源中设置后还是会锁屏, 原因是有屏幕保护程序 电源管理都 “从不” 一些AI的回答 在CentOS 6系统中,如果你想要禁用锁屏功能,可以编辑/etc/kbd/config文件。这个文件通常包含了键盘相关的设置,包括密码策略和屏幕锁定选项。 首先打开终…

昇思14天

ResNet50图像分类 1. ResNet50图像分类概述 ResNet50是一种用于图像分类的深度卷积神经网络。图像分类是计算机视觉的基本应用,属于有监督学习范畴。ResNet50通过引入残差结构,解决了深层网络中的退化问题,使得可以训练非常深的网络。 2. …

List、Map、Set 接口在Java中的存取元素特点

List、Map、Set 接口在Java中的存取元素特点 1、List 接口2、Map 接口3、Set 接口4、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,List、Map和Set是三个最常用的集合接口。它们各自有不同的特点和用途&#xff…

实践致知第12享:如何新建一个Word并设置格式

一、背景需求 小姑电话说:要新建一个Word文档,并将每段的首行设置空2格。 二、解决方案 1、在电脑桌面上空白地方,点击鼠标右键,在下拉的功能框中选择“DOC文档”或“DOCX文档”都可以,如下图所示。 之后&#xff0…

【密码学】分组密码概述

一、分组密码的定义 分组密码和流密码都是对称密码体制。 流密码:是将明文视为连续的比特流,对每个比特或字节进行实时加密,而不将其分割成固定的块。流密码适用于加密实时数据流,如网络通信。分组密码:是将明文数据…

D2D用户的功率优化算法研究

D2D通信技术是指两个对等的用户节点之间直接进行通信的一种通信方式。在由D2D通信用户组成的分布式网络中,每个用户节点都能发送和接收信号,并具有自动路由(转发消息)的功能。网络的参与者共享它们所拥有的一部分硬件资源,包括信息处理、存储…

【深度学习】第5章——卷积神经网络(CNN)

一、卷积神经网络 1.定义 卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理具有网格状拓扑结构数据的深度学习模型,特别适用于图像和视频处理。CNN 通过局部连接和权重共享机制,有效地减少了参数数量&#x…

Prometheus 二进制文件与操作系统或架构不兼容

目录 检查架构 下载正确的二进制文件 验证文件类型 权限问题 文件损坏 “可执行文件格式错误”表明你试图执行的二进制文件与操作系统或架构不兼容。 检查架构 确保你下载的二进制文件与系统的架构相匹配(例如,x86_64, arm64 等)。 可…

LabVIEW光谱测试系统

在现代光通信系统中,光谱分析是不可或缺的工具。开发了一种基于LabVIEW的高分辨率光谱测试系统,通过对可调谐激光器、可编程光滤波器和数据采集系统的控制,实现了高效、高精度的光谱测量。 项目背景 随着光通信技术的迅速发展,对…

20240710 每日AI必读资讯

🤖微软:不会像 OpenAI 一样阻止中国访问 AI 模型 - OpenAI 将于周二(7 月 9 日)开始阻止中国用户访问其 API。 - 微软发言人表示:Azure OpenAI API服务在中国的提供方式没有变化。 - 公司仍然通过部署在中国以外地区…

Mysql练习题目【7月10日更新】

七、Mysql练习题目 https://zhuanlan.zhihu.com/p/38354000 1. 创建表 创建学生表 mysql> create table if not exists student(-> student_id varchar(255) not null,-> student_name varchar(255) not null,-> birthday date not null,-> gender varchar(…