数据结构与算法——树与二叉树

树与二叉树

1.树的定义与相关概念

树的示例:

树的集合形式定义

Tree=(K,R)

元素集合:K={ki|0<=i<=n,n>=0,ki∈ElemType}(n为树中结点数,n=0则树为空,n>0则为非空树)

对于一棵非空树,关系R满足下列条件:

1.有且仅有一个结点没有前驱,称为根结点。

2.处根结点外,其余每个结点有且仅有一个前驱

3.每个结点(包括根),可以有任意多个(含0个)后继。

树的递归形式定义

树是由n(n>=0)个元素构成的有限集合。

任意一颗非空树,都满足:

1.有且仅有一个根节点。

2.其余结点被分成m(m>=0)个

3.互不相交的有限集T1,T2,...Tm,其中每一个集合Ti(1<=i<=m)又是一颗树(递归),称为根的子树。

树结构反映了元素间的层次关系,分类分级的问题都可以考虑用树来描述。

树的基本术语——1

结点的度:结点所拥有的子树的个数

树的度:树中所有结点的度的最大值

叶结点:度为的结点。

分支结点:不为零的结点。

孩子结点和双亲结点:在一颗树中,每个结点的后继,被称为该结点的孩子结点,相应地,该结点被称为孩子结点地双亲结点。

兄弟结点:具有同一双亲的孩子结点。

树的基本术语——2

结点的祖先:该结点所经分支上的所有结点都称为该结点的祖先。

结点的子孙:以某节点为根的子树中的任一结点。

 结点的层次:树是一种层次结构,树中的每个结点都处于某个层次上。

树的深度:树中所有结点层次的最大值,也成为树的高度

树的基本术语——3

有序树:树中的各结点的子树是按照从左到右有序排序的,即各子树的位置不能交换

无序树:树中各结点的子树排序是无序的。

森林:m(>=0)颗互不相交的树的集合。

2.二叉树的定义

二叉树:每个结点最多有两棵子树有序树

二叉树或者是一棵空树,或者是一棵由一个根节点和两棵互不相交的分别称做根的左子树和右子树组成的非空树,左子树和右子树同样是一颗二叉树。

注意:

二叉树的只能是012

二叉树是有序树,它的左、右子树是有次序的,即使只有一棵子树也要区分是左子树还是右子树。

3.满二叉树与完全二叉树

满二叉树:二叉树的所有分支结点都有左子树和右子树,并且所有叶子结点都在二叉树的最下一层

完全二叉树:具有n个结点的完全二叉树,它的结构与满二叉树的前n个结点结构相同

4.二叉树的性质

性质1:非空二叉树上的叶结点数等于双分支结点数加1.即:n0=n2+1

证明:

设n0,n1,n2分别代表度为0,1,2的结点的个数,则结点总数n=n0+n1+n2

除根结点以外,每个结点上层都有一个分支与之相连,因此,具有n个结点的二叉树的额分支总数为B=n-1

这些分支来自度为1和度为2的结点,因此,分支总数B=n1+2n2

由上述三个式子得出:n0=n2+1

性质2:非空二叉树的第i(i>=1)层上最多有2的i-1次方个结点。

性质3:深度为h(h>=1)的非空二叉树最多有2的h次方-1个结点

性质4:具有n(n>0)个结点的完全二叉树的深度:h=[log2的n次方]+1

性质5:n个结点的完全二叉树,按从上至下,从左至右的次序对结点编号,则编号为i的结点有以下性质:

1、若编号为i的结点满足:i<=[n/2],即2i<=n.则该结点为分支结点,否则为叶子结点。

2、若n为奇数,则每个分支结点既有左孩子又有右孩子;

3、若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点都有左、右孩子。

示例:已知一棵完全二叉树的第6层有7个结点,则:

前5层为满二叉树,共有结点2的5次方-1=31,第6层7个结点,总结点数为31+7=38.

由于完全二叉树最后一层的结点必须从左至右连续出现,所以 第6层的7个结点中,只有最后一个结点的双亲是度为1的结点,即度为1的结点有1个。

5.二叉树的顺序存储结构

在一组连续的存储单元中,按照完全二叉树中结点编号将结点自上而下、自左至右的顺序存储。

元素的位置序号和结点的编号相对应,即结点在数组中的位置表示了结点之间的关系:

1、结点编号为i,则:

2、结点i的双亲结点[i/2]

3、结点i的左子结点2i,右子结点2i+1

非完全二叉树 的存储方法:

6.二叉树的链式存储结构

二叉树结点类型:

typedfe struct node{ElemType data;//数据域struct node *left;struct node *right;//结点的左右子树指针
}BTNode;//二叉树结点类型

一个二叉链表由根指针root唯一确定。

若二叉树为空,则root=NULL;

若结点的某个孩子不存在,则相应的指针为空。 

三叉链表:根据实际问题的需要,还可以在结点中添加父结点的指针。

7.逻辑关系与存储结构

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

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

相关文章

51单片机应用开发---定时器(定时1S,LED以1S间隔闪烁)

实现目标 1、掌握定时器的配置流程&#xff1b; 2、掌握定时器初值的计算方法&#xff1b; 3、具体实现&#xff1a;&#xff08;1&#xff09;1mS中断1次&#xff0c;计数1000次中断&#xff0c;实现定时1S功能&#xff1b;&#xff08;2&#xff09;LED1每隔1S状态取反。 …

TCP/IP Attack Lab

网络拓扑&#xff1a; Task 1: SYN Flooding Attack 收到攻击之前&#xff0c;在Victim主机查看网络连接的状态: 在攻击之前使用User1主机(10.9.0.6)访问Victim(10.9.0.5)主机的 Telnet服务: Task 1.1: Launching the Attack Using Python 在Atacker上建立文件attack-1.py…

VictoriaMetrics 中文教程(10)集群版介绍

VictoriaMetrics 中文教程系列文章&#xff1a; VictoriaMetrics 中文教程&#xff08;01&#xff09;简介VictoriaMetrics 中文教程&#xff08;02&#xff09;安装VictoriaMetrics 中文教程&#xff08;03&#xff09;如何配置 Prometheus 使其把数据远程写入 VictoriaMetri…

深度学习(五):语音处理领域的创新引擎(5/10)

一、深度学习在语音处理中的崛起 在语音处理领域&#xff0c;传统方法如谱减法、维纳滤波等在处理复杂语音信号时存在诸多局限性。这些方法通常假设噪声是平稳的&#xff0c;但实际噪声往往是非平稳的&#xff0c;导致噪声估计不准确。同时&#xff0c;为了去除噪声&#xff0…

https和http的区别,及HTTPS的工作流程

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;都是超文本传输协议&#xff0c;但它们之间的关键区别在于安全性。 安全性&#xff1a; HTTP&#xff1a;数据以明文传输&#xff0c;没有加密&…

阿里云 SAE 应用引擎可观测性最佳实践

SAE 简介 Serverless 应用引擎 SAE&#xff08;Serverless App Engine&#xff09;是一款零代码改造、极简易用、自适应弹性的应用全托管平台。SAE 能够让用户免运维 IaaS 和 Kubernetes&#xff0c;秒级完成从源代码、代码包、Docker 镜像部署任意语言的在线应用&#xff08;…

Windows环境 ffmpeg 命令使用介绍

记录一下纯命令操作ffmpeg的用法&#xff01; 目录 一、FFmpeg查询命令帮助文档 1.ffmpeg、ffplay、ffprobe的区别 2.ffmpeg命令查看帮助文档 3.ffplay命令查看帮助文档 4.ffprobe命令查看帮助文档 二、FFmpeg音视频处理流程 三、FFmpeg命令分类查询 1.命令参数 2.查看…

深入理解Java虚拟机(五)

介绍垃圾收集器的算法及引用详解 1、引用计数器 引用计数器在对象中添加一个引用计数器&#xff0c;当一个地方引用的时候&#xff0c;计数器1&#xff0c;当引用失效时&#xff0c;计数器值就-1。 但是在Java里面存在对象循环引用&#xff1a;objA 和 objB都有字段instance…

Linux系统操作篇 one -文件指令及文件知识铺垫

Linux操作系统入门-系统篇 前言 Linux操作系统与Windows和MacOS这些系统不同&#xff0c;Linux是黑屏的操作系统&#xff0c;操作方式使用的是指令和代码行来进行&#xff0c;因此相对于Windows和MacOS这些带有图形化界面的系统&#xff0c;Linux的入门门槛和上手程度要更高&…

PostgreSQL的奥秘:表结构、TOAST与大对象

PostgreSQL&#xff08;以下简称PSQL&#xff09;因其灵活性和强大的功能深受欢迎。本文将详细介绍PSQL的内部结构&#xff0c;特别是页面缓冲机制&#xff0c;包括表结构、TOAST技术、大对象&#xff08;BLOB/CLOB&#xff09;&#xff0c;以及页面缓冲表的工作原理。同时&…

SQL Server 可观测最佳实践

SQL Server 简介 SQL Server 是微软公司开发的一款关系数据库管理系统&#xff0c;支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。它支持多种操作系统平台&#xff0c;而无论是物理还是虚拟形式&#xff0c;自建部署环境还是在云环境中&#xff0c;运行的操作系…

MySQL8 安装配置及卸载教程

MySQL8 安装配置及卸载教程 0 卸载 MySQL 如果之前没安过 MySQL &#xff0c;或者卸载干净了不用看这个。 如果安装中出现以下问题&#xff0c;有可能是为之前安装 MySQL 不成功&#xff0c;有残留的安装程序等文件程序或者是卸载 MySQL 不成功。 0.1 停止服务 首先进入服务…

大数据-194 数据挖掘 机器学习理论 有监督、无监督、半监督、强化学习

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Java最全面试题->数据库/中间件->KafKa面试题

文章目录 KafKaKafka中的ISR、AR代表什么?ISR的伸缩指什么?kafka中的broker 是干什么的?kafka中的 zookeeper 起到什么作用?kafka follower如何与leader同步数据?kafka 为什么那么快?kafka producer如何优化打入速度?kafka producer发送数据,ack为0,1,-1分别是什么意…

兼容Lodash的真正替代者

大家好&#xff0c;我是农村程序员&#xff0c;独立开发者&#xff0c;前端之虎陈随易。 这是我的个人网站&#xff1a;https://chensuiyi.me&#xff0c;欢迎一起交朋友~ 今天给大家分享一个前端工具库 Lodash 的替代品 es-toolkit。 仓库地址&#xff1a;https://github.com…

鼠标增强工具 MousePlus v5.3.9.0 中文绿色版

MousePlus 是一款功能强大的鼠标增强工具&#xff0c;它可以帮助用户提高鼠标操作效率和精准度。该软件可以自定义鼠标的各种功能和行为&#xff0c;让用户根据自己的习惯和需求来调整鼠标的表现。 详细功能 自定义鼠标按钮功能&#xff1a;可以为鼠标的各个按钮设置不同的功能…

基于SpringBoot+Vue+MySQL的中药材进存销管理系统

系统展示 系统背景 中药材在医疗保健领域具有重要地位&#xff0c;随着中药材市场的不断发展&#xff0c;对中药材的进存销管理提出了更高的要求。传统的管理方式效率低下&#xff0c;容易出现错误和漏洞&#xff0c;无法满足快速发展的市场需求。因此&#xff0c;开发一套集成…

Nginx+Tomcat 动静分离

1. NginxTomcat 环境 Nginx 处理静态资源的优势同样可以应用在 Tomcat 环境中 。从实现方法上来说&#xff0c;NginxTomcat 环境的搭建思路与前面完成的 NginxApache 环境是完全相同的&#xff0c;只需要将 Nginx 与 Tomcat 的站点文档目录配置到同一目录下&#xff0c;利用 N…

npm安装过程的问题

报错信息C:\Users\lyyds>npm list -global npm error code ENOENT npm error syscall lstat npm error path D:\nodejs\node_global npm error errno -4058 npm error enoent ENOENT: no such file or directory, lstat D:\nodejs\node_global npm error enoent This is rel…

数通自学——VLAN虚拟局域网,eNSP实验讲解

VLAN虚拟局域网&#xff0c;eNSP实验讲解 一、概念二、eNSP仿真实验1、实验一&#xff1a;vlan演示&#xff08;交换机端口access模式&#xff09;2、实验二&#xff1a;vlan演示&#xff08;交换机端口trunk模式&#xff09; 一、概念 VLAN&#xff08;Virtual Local Area Ne…