5.1二叉树——基本概念梳理

news2024/12/25 9:01:54

本篇博客梳理二叉树相关的基本概念

一、树的概念与结构

1.树是递归定义

树==根+N棵子树,每棵子树也可按照相同方式拆分
注意:子树之间不能有交集,否则变成(是另一种数据结构)
树

2.树的相关概念

(1)结点的度:一个结点含有的子树(子结点)的个数;A的度为6
(2)叶节点/终端结点:度为0的结点;如B,C,H,I,L,M,N
(3)双亲结点/父结点:如E是I和J的父节点
(4)孩子节点/子结点:如I,J是E的子节点
(5)树的高度/深度:图中树的高度为4

3.树的表示

(1)要求:既要保存值域,也要保存结点之间的关系
(2)左孩子右兄弟表示法
此方法可以高效地找到一个节点的所有子节点

typedef int DataType; 
struct Node 
{ 
	struct Node* firstChild1; // 第一个孩子结点 
	struct Node* pNextBrother; // 指向其下一个兄弟结点 
	DataType data; // 结点中的数据域 
};

左孩子右兄弟表示法

二、二叉树的概念与结构

假设树的高度为h,结点数为N

1.概念

子结点最多两个(度最大是2)

2.特殊的二叉树

(1)完全二叉树
①前(h-1)层为满二叉树
②最后一层不满,且最后一层从左到右必须连续

(2)满二叉树(特殊的完全二叉树):每层的节点数都达到最大

3.满二叉树的性质

深度为h的树,有性质
逻辑:第一层0个结点,即2^0;第二层1个结点,即2 ^ 1;以此类推,最终用等比数列求和可得结果
满二叉树

4.二叉树的存储结构

(1)顺序存储:用数组来存储
①只适合表示完全二叉树,如果不是完全二叉树会有空间浪费
顺序存储
②物理上:是一个数组;逻辑上:是一棵二叉树
③父子之间的坐标关系(设父亲下标为i)
左孩子下标:2i+1
右孩子下标:2i+2

反之:若左孩子下标为j,可求得父结点坐标为**(j-1)/2**
(2)链式存储:用链表来存储——数据域+左右指针域

typedef int BTDataType; 
// 二叉链 
struct BinaryTreeNode 
{ 
	struct BinTreeNode* left; // 指向当前结点左孩子 
	struct BinTreeNode* right; // 指向当前结点右孩子 
	BTDataType data; // 当前结点值域 
} 

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

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

相关文章

Linux进程信号——信号的概念与产生

文章目录 信号及其产生与发送什么是Linux信号信号的产生终端按键系统调用软件条件硬件条件 核心转储存储临时信号 信号及其产生与发送 我们从生活中理解信号,例如各种指示灯,红绿灯之类的,我们能认识红绿灯是因为每一种不同的情况在我们大脑…

Apache Doris 跨集群数据同步 CCR 全面介绍

CCR 概述 CCR(Cross Cluster Replication)也就是跨集群数据复制,能够在库/表级别将源集群的数据变更同步到目标集群,可用于提升在线服务的数据可用性、隔离在离线负载、建设两地三中心等。 CCR 通常被用于容灾备份、读写分离、集…

末代皇帝Intel核显黑苹果,NUC10的性能到底有多强

末代皇帝Intel核显黑苹果,NUC10的性能到底有多强 一、可以核显的Intel iGPU有哪些 核显是一个伟大的产物,它可以在我们没有多余的钱去买多余的显卡的时候排上用场,特别是在mini小主机的市场上,核显就显得尤为重要的,…

图形化的Agent工具

1 图形化 Agent 工具 1.1 核心组件 机器人 Bot:一个 AI 应用,或称为 Agent知识库:上传个人数据,机器人可根据其内容进行回复工作流:将大问题拆解成多个小问题,通过路径实现,路径上的每个节点完…

tomcat实战演练

一.tomcat介绍 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用, Tomcat 具有处理 HTML 页面的功能,它还是一个 Servlet 和 JSP容器。Tomc…

Python优化算法13——飞蛾扑火优化算法(MFO)

科研里面优化算法都用的多,尤其是各种动物园里面的智能仿生优化算法,但是目前都是MATLAB的代码多,python几乎没有什么包,这次把优化算法系列的代码都从底层手写开始。 需要看以前的优化算法文章可以参考:Python优化算…

三种插入排序详解和代码实现(直接插入排序、折半插入排序和希尔排序)

目录 基本思想直接插入排序排序方法代码实现复杂度分析 折半插入排序排序方法代码实现复杂度分析 希尔排序排序方法代码实现复杂度分析最佳情况平均情况最坏情况增量序列的影响 基本思想 插入排序的基本思想是:每一趟将一个待排序的元素按照其关键字的大小插入到已经…

Hadoop 分布式集群搭建

HDFS分布式集群搭建 一、部署规划1.1 进程规划1.2 软件规划1.3 用户规划1.4 目录规划 二、 搭建HDFS 分布式集群2.1 HDFS 集群配置2.1.1 下载安装 Hadoop2.1.2 修改 hadoop-env.sh 配置文件2.1.3 修改 core-site.xml 配置文件2.1.4 修改 hdfs-site.xml 配置文件2.1.5 修改 slav…

力扣刷题(1)

两数之和 两数之和-力扣 思路: 动态开辟一个数组,用来存放下标;两个for循环嵌套来判断,数组中的两个数相加是否与target相等若相等,则将 * returnSize赋值为2,表示数组中两个数,并将arr数组…

数学建模之数据分析【九】:数据清理总结

文章目录 一、什么是数据清理二、为什么数据清理很重要三、执行数据清洁的步骤四、如何执行数据清理五、数据清理的Python库实现5.1 数据检查与探索5.2 使用df.info()检查数据信息5.3 检查分类和数字列5.4 检查分类列中唯一值的总数5.5 执行数据清理的步骤5.5.1 删除所有上述不…

真的爽到了!Coze的黑神话 “循环“ 闪亮登场,啥都能循环,让你一次通关!

心心念念了很久,Coze工作流终于支持循环操作啦,泪奔~~ 看,就在工作流节点的“选择器”和“意图识别”当中偷偷摸摸地多了一个“循环” 这玩意可比批处理强太多了,批处理只能在当前节点循环,做一些简单的循环任务还不错…

【日记】狗尾巴草与暗恋(1519 字)

写在前面 消极内容注意 正文 好想吃火龙果。 下周会变得异常艰难。因为事情已经垒到天上去了,还要来检查。 上午,同事送了一点水果,我从来没见过。问了一下别人,有的说是灯笼果,有的说是菇凉果、姑娘果。搜了一下&am…

深入理解Elasticsearch:让搜索性能飞起来!

Elasticsearch 概述 Elasticsearch是一个基于lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。 ELK 技术栈是Elasticsearch、Logstash、Kibana三大开元框架首字母大写简称。 而Elasticsearch 是一个开源的高扩展的分布式全文搜索引擎, 是整个 ELK技术…

polarctf靶场[WEB]Don‘t touch me、机器人、uploader、扫扫看

目录 [web]Dont touch me 考点:查看源代码、前端 [web]机器人 考点:robot协议 工具:御剑,kali dirsearch [web]覆盖 考点:parse_str覆盖 [web]扫扫看 考点:目录扫描 工具:御剑、kali d…

【冒泡排序算法】输入n个数进行排序

要求:输入n个数进行排序 实现:使用冒泡排序算法,使用C语言实现 冒泡排序的基本原理: 比较相邻元素:从数组的开始位置,比较每对相邻的元素。如果前一个元素大于后一个元素,则交换它们。重复过…

数组基本知识2

目录 前言 二维数组 使用原因 定义二维数组 访问数组元素 实例 前言 上一篇,我简单的复习了一维数组,本篇讲述二维数组的基本知识,帮助大家预习和复习。 二维数组 使用原因 本质原因:一维数组,已经无法满足解决…

OSPF路由配置--单区域

目录 因为OSPF有很多重要的特殊区域和内容,所以划分为多篇博客来配置 一. 实验拓扑图 二. 实验配置 三. 实验验证: 因为OSPF有很多重要的特殊区域和内容,所以划分为多篇博客来配置 不理解OSPF路由动态协议的可以回顾一下OSPF详解,下这一系列的实验都不再做解…

SpringBoot集成kafka-消息转发@sendTo()注解

SpringBoot集成kafka-消息转发sendTo 1、消费者2、生产者3、实体类对象4、JSON工具类5、配置文件application.yml6、测试类7、测试 1、消费者 启动消费者进行消息监听,消费者A监听到生产者发送的消息使用sendTo()注解将消息转发给消费者B package com.power.consu…

在树莓派5上使用pytroch进行模型训练—全流程笔记

在树莓派上运行pytroch模型🚀 在完成了树莓派的一系列基础配置学习之后,按照规划,下一步要做的就是在树莓派上安装一个pytorch,尝试运行一下深度学习的模型,如果可以实现且准速度有一定保证的话,就可以作为…

代码随想录算法训练营第50天|卡码网 98. 所有可达路径

1.卡码网 98. 所有可达路径 题目链接:https://kamacoder.com/problempage.php?pid1170 文章链接:https://www.programmercarl.com/kamacoder/0098.所有可达路径.html#总结 1.图的存储 本题我们使用邻接表 或者 邻接矩阵都可以,因为后台数据…