【广义表,树,满二叉树,完全二叉树,二叉树的存储结构】

news2024/12/23 17:53:23

文章目录

  • 广义表
    • 树的基本术语
    • 线性结构和树结构的比较
    • 二叉树的定义
    • 案例
    • 二叉树的性质和存储结构
    • 两种特殊形式下的二叉树
      • 满二叉树
      • 完全二叉树
      • 完全二叉树的性质
    • 二叉树的存储结构
      • 二叉树的顺序存储结构
      • 二叉树的链式存储结构
      • 三叉链表

广义表

广义表(又称Lists)是n>=n个元素a0,a1,…,an-1的有限序列,其中每一个ai或是原子,或是一个广义表。在这里插入图片描述

  • 广义表通常记作:LS=(a1,a2,…,an)
    其中:LS为表名,n为表的长度,每一个ai为表的元素。
    习惯上,一般用大写字母表示广义表,小写字母表示原子。

  • 表头:若LS非空(n>=1),则第一个元素ai就是表头。
    记作head(LS) = ai
    注:表头可以是原子,也可以是子表。

  • 表尾:除表头之外的其他元素组成的表。
    记作:tail(LS) = (a2,…,an).
    注:表尾不是最后一个元素,而是一个子表。

树的定义:
树是n(n>=0)个空结点的有限集。
若n=0,则称为空树;
若n>0,则它满足两个条件:
(1)有且仅有一个特定的称为根的结点;
(2)其余结点可分为m(m>=0)个互不相交的有限集。其中每一个集合本身又是一棵树,并称为根的子树。

树的基本术语

在这里插入图片描述

  1. 根结点:非空树中无前驱的结点。
  2. 结点的度:结点拥有的子树数。(度不等于0,分支结点非终端结点,根结点以外的分支结点称为内部结点;度等于0,叶子终端结点。)
  3. 兄弟:双亲是同一个。
  4. 堂兄弟:双亲在同一层的结点。
  5. 树的度:树内各结点的度的最大值。
  6. 树的深度:树中结点的最大层次。
  7. 结点的子树的根称为该结点的孩子,该结点称为孩子的双亲结点的祖先。
  8. 有序数:树中结点的各子树从左至右有次序。(最左边为第一个孩子)。
  9. 无序树:树中结点的各子树无次序。
    10.森林:是m(m>=0)棵互不相交的树的集合。
    把根结点删除就变成了森林。

线性结构和树结构的比较

线性结构树结构
第一个数据元素 无前驱根结点(只有一个) 无双亲
最后一个数据元素 无后继叶子结点(可以有多个) 无孩子
其他数据元素其他结点----中间结点
一个前驱,一个后继一个双亲,多个孩子
一对一一对多

二叉树的定义

二叉树是n(n>=0个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的分别称作这个根的左子树和右子树的二叉树组成)。
特点:1.每个结点最多有两孩子(二叉树中不存在度大于2的结点)。
2.子树有左右之分,其次序不能颠倒。
3.二叉树可以是空集合,根可以有空的左子树或空的右子树。
具有3个结点的二叉树可能有几种不同的形态?普通树呢?
二叉树的5种形态:
在这里插入图片描述
树的两种形态:
在这里插入图片描述

案例

用树表示运算符
在这里插入图片描述

二叉树的性质和存储结构

性质1:在二叉树的第i层上至多有在这里插入图片描述个结点(i>=1)。
在这里插入图片描述
性质2:深度为k的二叉树至多有在这里插入图片描述个结点(k>=1)。
深度为k时至少有k个结点。
性质3:对任何一棵二叉树T,如果其叶子数为n0,度为2的结点数为n2,则n0=n2+1。

在这里插入图片描述因为根结点没有前驱,所以边数-1。
在这里插入图片描述
最后两边相等。
在这里插入图片描述

两种特殊形式下的二叉树

研究他们的原因:因为他们在顺序存储方式下可以复原。

满二叉树

一棵深度为k且有在这里插入图片描述个结点的二叉树称为慢二叉树。
特点:每一层上的结点数都是最大结点数(即每层都满),叶子结点全部都在底层。
对满二叉树结点位置进行编号:(1)自上而下,自左而右。(2)每一节点位置都有元素。

完全二叉树

深度为k的具有n个结点的二叉树,当且仅当每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树。
在这里插入图片描述注:在满二叉树中,从最后一个结点开始,连续去掉任意个结点,即一棵完全二叉树。
一定是连续去掉!!!

完全二叉树的性质

性质4:具有n个结点的称为完全二叉树的深度为在这里插入图片描述注:在这里插入图片描述称为x的底,表示不大于x的最大整数。
性质4表明了完全二叉树结点数n与完全二叉树深度k之间的关系。
在这里插入图片描述
性质5:在这里插入图片描述

二叉树的存储结构

二叉树的存储结构分为顺序存储结构,链式存储结构(二叉链表,三叉链表)。

二叉树的顺序存储结构

实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素。
在这里插入图片描述

#define MAXTAIZE 100
#define TElemType int

//二叉树的顺序存储
typedef TElemType SqBiTree[MAXTAIZE];
SqBiTree bt;

例:在这里插入图片描述

二叉树的链式存储结构

二叉树节点的特点:在这里插入图片描述
结点结构:
在这里插入图片描述

#define TElemType int

typedef struct BiNode {
	TElemType data;
	struct BiNode* lchild, * rchild;//左右孩子指针
}BiNode,*BiTree;

在这里插入图片描述
在n个结点的二叉树链表中,有n+1个空指针域。
在这里插入图片描述
必有2n个链域,除根结点外,每一个结点有且仅有一个双亲,所以会有n-1个结点存放链域或指针域,指向非空子女结点。

三叉链表

在这里插入图片描述

typedef struct TriTNode {
	TElemType data;
	struct BiNode* lchild, * rchild,*rchild;//左右孩子指针
}TriTNode, * TriTree;

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

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

相关文章

建筑能源管理(8)——合同能源管理

1、简介 合同能源管理是20世纪70年代中期在发达国家逐步发展起来的一种节能服务机制在国外简称EPC(Energy Performance Contracting),在国内广泛地被称为EMC (Energy Management Contracting),它由专门的节能服务公司(Energy Service Company,ESCO)在为…

【KVM】软件虚拟化和硬件虚拟化类型

前言 大家好,我是秋意零。 今天介绍的内容是虚拟化技术以及软件虚拟化和硬件虚拟化。 👿 简介 🏠 个人主页: 秋意零🔥 账号:全平台同名, 秋意零 账号创作者、 云社区 创建者🧑 个…

Windows搭建Web站点:免费内网穿透发布至公网

目录 什么是cpolar? 概述 1. 注册并安装cpolar内网穿透 2. 搭建一个静态Web站点 2.1 下载演示站点 2.2 本地运行演示站点 2.3 本地浏览测试站点是否正常 3. 本地站点发布公网可访问 3.1 登录cpolar web ui管理界面 3.2 启动website隧道 3.3 获取公网URL地…

【数据结构】单链表详解(超详细)

单链表是我们学习数据结构时必不可少的部分,但也由于指针的参与变得更加复杂,这篇文章学习完之后可以更好地理解与掌握链表结构 注意: 数据结构中,不在乎菜单的创建,注重的是功能的实现;菜单的创建会影响我…

什么是协议栈? 用户态协议栈设计(udp协议栈)

什么是协议栈呢? (协议栈(Protocol Stack)是计算机网络和通信系统中的一个重要概念,它指的是一组协议层的层次结构,这些协议层一起协同工作,以便在不同计算机或设备之间实现数据通信和交换。每…

开源 Wiki 软件 wiki.js

wiki.js简介 最强大、 可扩展的开源Wiki 软件。使用 Wiki.js 美观直观的界面让编写文档成为一种乐趣!根据 AGPL-v3 许可证发布。 官方网站:https://js.wiki/ 项目地址:https://github.com/requarks/wiki 主要特性: 随处安装&a…

【从零开始学习Redis | 第四篇】基于延时双删对Cache Aside的优化

前言: 在如今的单体项目中,为了减轻大量相同请求对数据库的压力,我们采取了缓存中间件Redis。核心思想为:把数据写入到redis中,在查询的时候,就可以直接从Redis中拿取数据,这样我们原本对数据库…

Microsoft Dynamics 365 CE 扩展定制 - 5. 外部集成

本章内容包括: 使用.NET从其他系统连接到Dynamics 365使用OData(Java)从其他系统连接到Dynamics 365使用外部库从外部源检索数据使用web应用程序连接到Dynamics 365运行Azure计划任务设置Azure Service Bus终结点与Azure Service Bus构建近乎实时的集成使用来自Azure服务总线…

单目标应用:粒子群优化算法(PSO)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、粒子群优化算法(PSO)求解微电网优化 (1)部分代码 close all; clear ; clc; global P_load; %电负荷 gl…

[SSD综述 1.4] SSD固态硬盘的架构和功能导论

依公知及经验整理,原创保护,禁止转载。 专栏 《SSD入门到精通系列》 <<<< 返回总目录 <<<< ​ 前言 机械硬盘的存储系统由于内部结构, 其IO访问性能无法进一步提高,CPU与存储器之间的性能差距逐渐扩大。以Nand Flash为存储介质的固态硬盘技术的发展,…

mooc单元测验第一单元

TCP和OSI参考模型对比 OSI参考模型与TCP/IP参考模型(计算机网络)_osi模型 tcpip模型_李桥桉的博客-CSDN博客 会话层和物理层

分享女儿的冬季时尚穿搭~经典款的羽绒服

分享女儿冬季的时尚穿搭—羽绒服 经典百搭的时尚款 90白鸭绒&#xff0b;杜邦三防工艺&#xff0b;精细走线&#xff0b;腰部抽绳 满满的设计感&#xff0c;穿上简直不要太好看啊&#xff01;

计算机组成与结构-安全性和可靠性

系统可靠性分析 概念 平均无故障时间 MTTF 1/失效率 平均故障修复时间 MTTR1/修复率 平均故障间隔时间 MTBFMTTFMTTR 系统可用性 MTTF/(MTTFMTTR)*100% 计算 串联系统 一个设备不可靠&#xff0c;整个系统崩溃RR1R2Rn 并联系统 所有设备不可靠&#xff0c;整个系统崩溃R1-(1…

数据结构(超详细讲解!!)第二十一节 特殊矩阵的压缩存储

1.压缩存储的目标 值相同的元素只存储一次 压缩掉对零元的存储&#xff0c;只存储非零元 特殊形状矩阵&#xff1a; 是指非零元&#xff08;如值相同的元素&#xff09;或零元素分布具有一定规律性的矩阵。 如&#xff1a; 对称矩阵 上三角矩阵 下三角矩阵 对角矩阵 准…

汽车标定技术(二)--基于XCP的标定测量实战

目录 1.工程创建 1.1 新建工程 1.2 设备配置 1.3 标定观测 1.4 刷写 2.原始hex文件与标定文件的合并 2.1 修改memory segment file 2.2 标定量地址偏移 ​编辑 2.3 标定后与原始hex文件合并 2.4 标定后直接merge 2.5 不用对ram地址进行偏移实现hex文件合并 本文使用…

算法?认识一下啦

一、什么是算法&#xff1f; 算法 &#xff0c;是对特定问题求解方法和步骤的一种描述。它是有限指令的有限序列&#xff0c;其中每个指令表示一个或多个操作。 算法和程序的关系 算法​是解决问题的一种方法或一个过程&#xff0c;考虑如何将输入转换成输出&#xff0c;一个…

小程序如何设置用户同意服务协议并上传头像和昵称

为了保护用户权益和提供更好的用户体验&#xff0c;设置一些必填项和必读协议是非常必要的。首先&#xff0c;用户必须阅读服务协议。服务协议是明确规定用户和商家之间权益和义务的文件。通过要求用户在下单前必须同意协议&#xff0c;可以确保用户在使用服务之前了解并同意相…

Android Studio布局

线性布局 水平或竖直排列子元素的布局容器 相对布局 可针对容器内每个子元素设置相对位置&#xff08;相对于父容器或同级子元素的位置&#xff09; 网格布局 找了下面这篇文章连接可以参考&#xff08;不再赘述&#xff09; GridLayout(网格布局) | 菜鸟教程 (runoob.com) …

【原创】java+swing+mysql校园共享单车管理系统设计与实现

摘要&#xff1a; 校园共享单车作为一种绿色、便捷的出行方式&#xff0c;在校园内得到了广泛的应用。然而&#xff0c;随着单车数量的增加&#xff0c;管理难度也不断加大。如何提高单车的利用率和管理效率&#xff0c;成为校园共享单车发展面临的重要问题。本文针对这一问题…

Python武器库开发-常用模块之collections模块(十七)

常用模块之collections模块(十七) 除python提供的内置数据类型&#xff08;int、float、str、list、tuple、dict&#xff09;外&#xff0c;collections模块还提供了其他数据类型: 计数器&#xff08;counter&#xff09;有序字典&#xff08;orderedDict&#xff09;可命名元…