树结构的实现

树的概念

        树是一种非线性的数据结构,它是由n个有限节点组成一个具有层次关系的集合,它看起来像棵树,所以称其为“树”。如下图:

        

树可以分为根和子树,而子树又可以被分为根和子树,故我们可以用递归对其进行实现。

注意:子树之间不能相交

树的实现

1.顺序表

        可以用结构体设置TreeNode再用顺序表存子树,代码如下:

struct TreeNode
{
	int val;
	SeqList subs;
	vector<struct TreeNode*> subs;
};

2.左孩子右兄弟

        定义两个指针:孩子指针,兄弟指针。图示如下:

无论父亲有多少孩子,都只用指向后代第一个孩子,接下来的每个孩子都向右指向兄弟。

像这样设计,若想要遍历时则比较方便。

struct TreeNode
{
	int val;
	struct TreeNode* leftchild;
	struct TreeNode* rightbrother;
};

二叉树

        二叉树是数据结构中非常重要的一个算法.

二叉树的概念

        一颗二叉树是节点的一个有限结合,该集合或为空,或为由一个节点加上两棵树(分别称为左子树和右子树)组成。

满二叉树

        一个二叉树,如果每一个层的结点数都达到大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为且结点总数是2^k-1,则它就是满二叉树。

完全二叉树

        完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为的,有n个节点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至N的节点,即称为二叉树,要注意的是满二叉树是一种特殊的完全二叉树

完全二叉树的结构

我们这里用数组来储存二叉树中的数据

逻辑结构(想象出来的)

我们想象它是这样存的

物理结构(计算机中实际存储的)

由此我们可以推出:

        假设父亲在数组中的下标为i,则左孩子在数组中的下标是:2*i+1;右孩子在数组中的下标是2*i+2(仅对于完全二叉树和满二叉树成立).       

所以我们发现对于这种数组存储会造成内存浪费,所以只适合完全二叉树。

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

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

相关文章

基恩士LT-X8000A的IP地址

在这里插入图片描述 192.168.0.256 192.168.0.1 LT-X8000A

Kotlin 协程真的轻量吗?

前言 在官方文档的介绍中,提到了: 协程是轻量的 并给出了一个例子: fun main() = runBlocking {repeat(50_000) {// 启动大量的协程launch {delay

Button按钮类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 按钮是GUI界面中应用最为广泛的控件&#xff0c;它常用于捕获用户生成的单击事件&#xff0c;其最明显的用途是触发绑定到一个处理函数。 wxPython类…

180.二叉树:二叉搜索树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

MFC上下文菜单与定时器学习笔记

本博文简单介绍了上下文菜单以及定时器的知识内容&#xff0c;作为笔记发表在csdn上面。 在这里插入图片描述 菜单资源的使用 添加菜单资源加载菜单资源&#xff1a; 注册窗口类时设置菜单创建窗口传参设置菜单在主窗口WM_CREATE消息中利用SetMenu函数设置 加载菜单资…

Python学习笔记6:pychram相关知识及安装教程,后续需要学习的入门知识

上篇文章说了&#xff0c;今天去公司重新装一下IDE&#xff0c;最后也是把过程这边再记录一下&#xff0c;有需要的可以参考一下。 关于pychram pychram是什么&#xff1f; PyCharm是由JetBrains公司开发的一款流行的Python集成开发环境&#xff08;IDE&#xff09;。它专为…

RAM IP核配置

REVIEW 之前已经学习过&#xff1a; ROM:FPGA寄存器 Vivado IP核-CSDN博客 串口接收&#xff1a;Vivado 串口接收优化-CSDN博客 1. 今日摸鱼计划 RAM创建与测试 小梅哥视频&#xff1a; 21C_嵌入式块存储器RAM介绍_哔哩哔哩_bilibili 21D_嵌入式块存储器RAM实现和仿真_哔哩…

wordpress旅游网站模板

旅行社wordpress主题 简洁实用的旅行社wordpress主题&#xff0c;适用于旅行社建网站的wordpress主题模板。 https://www.jianzhanpress.com/?p4296 旅游WordPress主题 简洁实用的旅游WordPress主题&#xff0c;适合做旅游公司网站的WordPress主题模板。 https://www.jian…

网络故障排除:保持网络稳定与业务连续

目录 什么是网络故障&#xff1f; 网络故障排除的基本步骤 1. 问题识别 2. 确定故障范围 3. 检查物理连接 4. 检查设备配置 5. 测试与诊断 6. 实施解决方案 7. 验证与监控 了解更多 在现代企业中&#xff0c;网络的稳定性和性能直接影响业务的连续性和效率。作为一名…

上岸北科大计算机专业难度有多大?北京科技大学计算机考研考情分析!

北京科技大学计算机与通信工程学院源于1973年成立的计算机及应用专业&#xff0c;经过近40年的建设&#xff0c;学院在学科建设、科学研究水平和教育教学质量上实现了跨越式的发展与大力提升。学院目前设有计算机科学与技术系、软件工程系、通信工程系、物联网与电子工程系、信…

项目文件预览

在实际项目开发过程&#xff0c;项目使用数据存在多种形式&#xff0c;“文件”也是一种常见形式&#xff0c;因此&#xff0c;“文件预览”功能变成了常规需求。 kkFileView项目使用流行的spring boot搭建&#xff0c;易上手和部署。万能的文件预览开源项目&#xff0c;基本支…

知识图谱的应用---智慧外交

文章目录 智慧外交典型应用 智慧外交 智慧外交是指通过事件分析的手段&#xff0c;从历史、政治、经济、军事、文化等多个层面对各个国家的关系进行定量分析&#xff0c;提供智能化的外交关系研判和外交决策支撑。依托公开媒体、互联网及内部信息等海量资源数据&#xff0c;综合…

视频号小店常见问题全网最全的合集,赶紧收藏起来!

大家好&#xff0c;我是电商小V 新的电商项目视频号小店也是越来越火&#xff0c;想去操作的小伙伴也是越来越多&#xff0c;但是很多人对于这个项目本身不是很了解&#xff0c;咱们今天就来详细的说一下视频号小店&#xff0c;最关心的问题&#xff0c;一篇详解&#xff0c;建…

计算机组成原理(五)

一、链式查询方式 接口的优先级固定不变 在链式查询的情况下&#xff0c;设备的优先级通常与其在链中的位置有关。具体来说&#xff0c;越靠近查询链的起始位置的设备通常具有较高的优先级&#xff0c;而越靠近链的末尾位置的设备优先级较低。 优点&#xff1a; 简单实现&am…

12. ESP32-JSON(Arduino)

使用ESP32和Arduino框架处理JSON数据 在物联网&#xff08;IoT&#xff09;开发中&#xff0c;ESP32是一款功能强大的微控制器&#xff0c;它结合了Wi-Fi和蓝牙功能&#xff0c;适用于各种智能设备和传感器项目。JSON&#xff08;JavaScript Object Notation&#xff09;是一种…

StaticText文本类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 创建完窗口以后&#xff0c;我们可以在窗口内添加一些控件&#xff0c;所谓的控件&#xff0c;就是经常使用的按钮、文本、输入框、单选框等。 于所…

AIOps实现的简单途径

AIOps需要大模型的支持&#xff0c;但是训练一个业务专用的大模型并不是一件理想的任务&#xff0c;所以利用开源的通用大模型才是王道。 我们可以利用AI大模型的理解能力来帮助分析和解释Kubernetes&#xff08;K8s&#xff09;的日志。通过提供日志中可能存在问题的部分&…

白酒:茅台镇白酒的消费趋势与未来发展

茅台镇&#xff0c;中国白酒的璀璨明珠&#xff0c;以出产品质的白酒而享誉全球。在这片神奇的土地上&#xff0c;云仓酒庄豪迈白酒以其别具一格的酿造工艺和风格特点&#xff0c;成为了市场的宠儿。随着消费市场的不断变化&#xff0c;云仓酒庄豪迈白酒的消费趋势也在悄然发生…

代码随想录算法训练营第四十三天 | 01背包问题理论基础、01背包问题滚动数组、416. 分割等和子集

背包问题其实有很多种&#xff0c;01背包是最基础也是最经典的&#xff0c;软工计科学生一定要掌握的。 01背包问题 代码随想录 视频讲解&#xff1a;带你学透0-1背包问题&#xff01;| 关于背包问题&#xff0c;你不清楚的地方&#xff0c;这里都讲了&#xff01;| 动态规划经…

基于学习模型的可学习小波变换方法(Pytorch)

首先以图像编码为例进行说明。 图像编码是一个复杂的系统&#xff0c;通常包含多个模块&#xff0c;其中变换模块具有重要作用。小波变换在图像编码领域得到了广泛的应用&#xff0c;例如著名的JPEG 2000就是一种小波图像编码方法。然而&#xff0c;现阶段的小波图像编码方法与…