【二叉树的性质与存储结构】

news2024/11/23 23:34:31

1.特殊的二叉树

1.1满二叉树

在这里插入图片描述
在这里插入图片描述
特点

  • 每一层上的结点数都是最大结点数(即每层都满)
  • 叶子结点全部在最底层
  • 满二叉树在同样深度的二叉树中结点个数最多
  • 满二叉树在同样深度的二又树中叶子结点个数最多

编号原则

  • 每一结点位置都有元素
  • 根结点开始自上而下,自左而右

1.2完全二叉树(一一对应)

在这里插入图片描述
实例如下:
在这里插入图片描述

  • 核心1:在满二叉树中,从最后一个结点开始连续去掉任意个结点,即是一棵完全二叉树.
  • 核心2满二叉树一定是完全二叉树完全二叉树不一定是满二叉树

特点:
在这里插入图片描述

1.3斜树(了解即可,本质就是线性结构)

左斜树:所有的结点都只有左子树的二叉树
右斜树:所有的结点都只有右子树的二叉树

2.二叉树的相关性质

2.1性质1(某层结点数,max)

在这里插入图片描述
在这里插入图片描述
注意第i层上至少有1个结点
(如果1个结点都没有,就不可能有这么多层了)
证明
在这里插入图片描述

2.2性质2(整树结点数,max)

在这里插入图片描述
注意:深度为k时至少有k个结点
(深度为k,每一层上至少有1个结点,总共k个结点)
证明
在这里插入图片描述

2.3性质3(叶子结点数 与 度为2的结点数)

分析过程为重
在这里插入图片描述
证明
在这里插入图片描述
在这里插入图片描述

2.4性质4(通过结点数 求 完全二叉树的深度)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
证明:
在这里插入图片描述

2.5性质5(双亲 与 孩子结点的编号关系)

如果对一颗有n个结点的完全二叉树(深度为 [log2n]+1 )
结点按层序编号(从第1层到第 [log2n]+1层,每层从左到右),
则对任一结点i(1≤n),有:
在这里插入图片描述
示例:
在这里插入图片描述

3.二叉树的存储结构

在这里插入图片描述

3.1二叉树的顺序存储结构(用数组存储)

(适合满二叉树,完全二叉树)

3.1.1顺序存储规则:

满二又树的结点层次形式编号依次存放二叉树中的数据元素
例1:
在这里插入图片描述
例2:
在这里插入图片描述

3.1.2通过存储表画出二叉树

(1)先画出对应深度的满二叉树,并标号
(2)通过存储表中的序号进行元素填入,得到对应的二叉树

在这里插入图片描述

3.1.3顺序存储的缺点

在这里插入图片描述
在这里插入图片描述

3.2二叉树的链式存储结构

3.2.1链式存储图解

在这里插入图片描述

3.2.2代码如下:(二叉链表)

#include<stdio.h>
#include<stdlib.h>

typedef int TElemType;//树中元素基本类型

//二叉树结点链式存储结构(二叉链表)
typedef struct BiNode
{
	TElemType data;//数据域
	struct BiNode* lchild, * rchild;//左,右孩子指针
}BiNode,*BiTree;
//BiNode:用来定义结点类型
//BiTree:用来定义树类型

在这里插入图片描述

3.2.3特性

在n个结点的二叉链表中,有n+1个空指针域
分析:
在这里插入图片描述

3.2.4三叉链表(添加了一个指向双亲的指针域)

更便于访问双亲结点
在这里插入图片描述
代码如下:

#include<stdio.h>
#include<stdlib.h>

typedef int TElemType;//树中元素基本类型

//二叉树结点链式存储结构(三叉链表)
typedef struct TriTNode
{
	TElemType data;//数据域
	struct TriNode* lchild, * parent,* rchild;//左孩子,双亲,右孩子指针
}TirNode, * TirTree;
//TirNode:用来定义结点类型
//TirTree:用来定义树类型

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

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

相关文章

探索SVG的奥秘:Python中的svgwrite库

文章目录 探索SVG的奥秘&#xff1a;Python中的svgwrite库背景&#xff1a;为何选择svgwrite&#xff1f;什么是svgwrite&#xff1f;如何安装svgwrite&#xff1f;五个简单的库函数使用方法场景应用&#xff1a;svgwrite在实际中的使用常见问题与解决方案总结 探索SVG的奥秘&a…

表面缺陷检测系统源码分享

表面缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的

1.Ubuntu服务器环境安装 1.1 增加微软包安装源 wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb1.2 Install the .NET SDK # 更新本地软件包列表。原理&am…

多输入多输出 | Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输入多输出预测

多输入多输出 | Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输…

webpack5-手撸RemoveConsolePlugin插件

写在前面 其实呢&#xff0c;这个东西也就那样&#xff0c;主要是我们得清楚webpack构建过程中的生命周期钩子&#xff0c; 就拿这个插件来说&#xff0c;我们想要把输出的js文件里面的内容中的console语句去掉&#xff0c;那么我们就需要找到webpack处理完文件时的钩子&#…

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的&#xff1f; 事件组使用的场景 学校组织秋游&#xff0c;组长在等待&#xff1a; 张三&#xff1a;我到了 李四&#xff1a;我…

HTB-Vaccine(suid提权、sqlmap、john2zip)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天来为大家讲解Vaccine靶机 渗透过程 信息搜集 服务器开放了 21FTP服务、22SSH服务、80HTTP服务 通过匿名登录FTP服务器 通过匿名登录到服务器&#xff0c;发现backup.zip文件&#xff0c;可能存在账号密码 发现b…

centos上开启mysql远程访问功能

自从mysql8以后&#xff0c;mysql有些命令变了&#xff0c;例如授权需要分成好几行。如果想远程访问mysql&#xff0c;那么可以这样做&#xff1a; mysql -u root -p mysql //先登录mysql create user root% identified by 你自己的密码;//先建立一个root用户和密码 grant a…

大模型日报|16 篇必读的大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 清华团队提出歌曲生成模型 SongCreator 虽然此前研究已对歌曲生成的各个方面进行了探索&#xff0c;如歌唱发声、声乐创作和乐器编曲等&#xff0c;但要生成既有歌词又有人声和伴奏的歌曲仍是一项重大挑战&#xff0…

SpringMVC的初理解

1. SpringMVC是对表述层&#xff08;Controller&#xff09;解决方案 主要是 1.简化前端参数接收( 形参列表 ) 2.简化后端数据响应(返回值) 1.数据的接受 1.路径的匹配 使用RequestMapping(可以在类上或在方法上)&#xff0c;支持模糊查询&#xff0c;在内部有method附带…

【数据分析】利用Python+AI+工作流实现自动化数据分析-全流程讲解

文章目录 一、为什么要用AI进行自动化分析&#xff1f;二、AI自动化分析场景三、编写Python脚本示例1、用flask实现让AI分析数据内容使用说明&#xff1a;示例2、用定时任务的方式&#xff0c;定时处理AI数据&#x1f4cb; 代码说明 四、把AI分析的数据&#xff0c;放到AI工作流…

详聊LLaMa技术细节:LLaMA大模型是如何炼成的?

本文介绍来自 Meta AI 的 LLaMa 模型&#xff0c;类似于 OPT&#xff0c;也是一种完全开源的大语言模型。LLaMa 的参数量级从 7B 到 65B 大小不等&#xff0c;是在数万亿个 token 上面训练得到。值得一提的是&#xff0c;LLaMa 虽然只使用公共的数据集&#xff0c;依然取得了强…

从AI到大数据,数字技术服务平台全栈赋能企业升级

在当今科技迅猛发展的时代&#xff0c;从 AI&#xff08;人工智能&#xff09;到大数据&#xff0c;数字技术正以前所未有的速度重塑着各个行业。而数字技术服务平台&#xff0c;则如同一位强大的魔法师&#xff0c;全栈赋能企业升级&#xff0c;为企业开启崭新的发展篇章。 AI…

若依搭建vue3项目

搭建vue3后台管理系统页面&#xff0c;与vue2基本一致&#xff0c;方便以后可以快速搭建&#xff0c;现在将基础搭建以及若依框架搭建流程再次梳理一下 文章目录 环境准备1. Node.js环境安装2. 推荐包管理器&#xff1a;pnpm3. 安装create-vue工具 方式一&#xff1a;脚手架搭建…

计算机网络 ---- 计算机网络的体系结构【计算机网络的分层结构】

一、以快递网络来引入分层思想 1.1 “分层” 的设计思想【将庞大而复杂的问题&#xff0c;转化为若干较小的局部问题】 从我们最熟悉的快递网络出发&#xff0c;在你家附近会有一个快递终点站A&#xff0c;在其他的城市&#xff0c;也会有这种快递终点站&#xff0c;比如说快递…

贷款防坑秘籍:揭秘几大陷阱,让套路无所遁形!

今日话题聚焦于贷款领域的潜藏陷阱&#xff0c;旨在助您避开精心设计的圈套&#xff0c;确保金融决策的智慧与安全。我们常误以为寻得了可靠的助力&#xff0c;实则可能步入了层层迷局&#xff0c;以下便是一系列揭秘与警示&#xff1a; 首先&#xff0c;警惕“超低利率”的甜蜜…

终于!!把企业轻量级数据中台的构建路径理清了!

一、标准化轻量级数据中台落地探索 尽管数据中台在近些年的热度有所下降&#xff0c;但大中型企业依然对其建设非常重视。企业通过数据中台的搭建&#xff0c;旨在构建统一的数据开发、管理和应用规范&#xff0c;创造标准统一的数据资产&#xff0c;夯实数据互通的基础&#…

对话:LLC磁集成能否成为充电桩模块电源常态产品?

编者按&#xff1a;在终端需求疲软的影响下&#xff0c;前两年火热的新能源汽车、光伏、储能等新能源领域也掀起了价格战&#xff0c;储能已正式进入0.5元时代&#xff0c;新能源汽车领域价格战更是一轮接一轮&#xff0c;成本管控成为2024年企业绕不开的话题。 接下来我们将围…

2024北京IC WORLD大会启幕:高频科技展位人气高涨,共绘半导体产业“芯”篇章

9月11日,2024北京微电子国际研讨会暨IC WORLD大会在北人亦创国际会展中心盛大启幕。此次大会汇集200余家集成电路装备、零部件到材料等全领域企业,纷纷展出最新成果,共同推动集成电路产业向聚集化、链条化、高端化方向迈进。 高频科技作为半导体水系统领域的代表性企业受邀参加…

机器学习 第14章 概率图模型

目录 隐马尔可夫模型&#xff08;HMM&#xff09;马尔可夫随机场(MRF)条件随机场&#xff08;CRF&#xff09;学习与推断变量消去信念传播 近似推断MCMC采样变分推断 话题模型 隐马尔可夫模型&#xff08;HMM&#xff09; 隐马尔可夫模型 (Hidden Markov Model, HMM) 是一种统…