当前位置: 首页 > news >正文

焦作会做网站制作的有哪家安徽万振建设集团网站

焦作会做网站制作的有哪家,安徽万振建设集团网站,三峡建设网站,免费建网站软件下载目录 0.前言 1.树的认识 什么是树 树的相关概念 树的表示 孩子兄弟表示法 2.二叉树的认识 什么是二叉树 特殊的二叉树 满二叉树 完全二叉树 二叉树的性质 性质一 性质二 性质三 二叉树的存储 顺序存储 链式存储 0.前言 笔者我之前讲解的数据结构都是线性…

目录

0.前言

1.树的认识

什么是树

树的相关概念

树的表示

孩子兄弟表示法

2.二叉树的认识 

什么是二叉树

特殊的二叉树 

满二叉树

完全二叉树

二叉树的性质

性质一

性质二

性质三 

二叉树的存储

顺序存储

链式存储


0.前言

笔者我之前讲解的数据结构都是线性的数据结构,比如:顺序表、链表、栈、队列。线性结构中存储的元素在逻辑上像是被一条线串起来的一样。现在我将介绍一种非线性的数据结构 —— 二叉树,但是介绍二叉树之前需要介绍一下树,因为二叉树是树的一种特殊情况。

1.树的认识

什么是树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。之所以把它叫做树,是因为这种数据结构看起来像一棵倒过来的树,根朝上,叶朝下,如下图所示。

  • 从上往下的第一个结点叫做根结点
  • 除根节点外,其余结点被分成m (m>0) 个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m) 又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。

注意:树形结构中,子树之间不能有交集,否则就不是树!变成了另一种数据结构 —— 图。

这就不是一棵树:

树的相关概念

  • 节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6
  • 叶节点或终端节点度为0的节点称为叶节点; 如上图:B、C、H、I...等节点为叶节点
  • 非终端节点或分支节点度不为0的节点; 如上图:D、E、F、G...等节点为分支节点
  • 双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点
  • 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 如上图:B是A的孩子节点
  • 兄弟节点:具有相同父节点的节点互称为兄弟节点; 如上图:B、C是兄弟节点
  • 树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为6
  • 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
  • 树的高度或深度:树中节点的最大层次; 如上图:树的高度为4
  • 堂兄弟节点:双亲在同一层的节点互为堂兄弟;如上图:H、I互为兄弟节点
  • 节点的祖先从根到该节点所经分支上的所有节点;如上图:A是所有节点的祖先
  • 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。如上图:所有节点都是A的子孙
  • 森林:由m(m>0)棵互不相交的树的集合称为森林;

树的表示

表示一棵树说的就是用代码如何表示一棵树。前面列出的图都是树的逻辑图,也就是说,在逻辑上,我们希望他是这样的。表示树的时候,既要保存值域,也要保存结点和结点之间的关系,基于这点,实现起来是比较麻烦的,但是有人发明了如下几种表示树的方式。

  • 双亲表示法:每个结点都记录自己的双亲。
  • 孩子表示法:每个结点都记录自己的孩子。
  • 孩子双亲表示法:每个结点既记录自己的孩子,也记录自己的双亲。
  • 孩子兄弟表示法:每个结点既记录自己的孩子,也记录自己的兄弟。

其中最常用的是孩子兄弟表示法

孩子兄弟表示法

孩子兄弟表示法说的就是,每个结点记录从左往右数的第一个孩子结点自己后面的第一个兄弟结点。

每个结点的定义如下:

逻辑图如下:

2.二叉树的认识 

什么是二叉树

二叉树是一种特殊的树,特殊的地方就在于二叉树每个结点的度最大为二。一棵二叉树是结点的一个有限集合,该集合必须具有以下条件之一:

  • 或者为空。
  • 或者由一个根节点加上两棵别称为左子树和右子树的二叉树组成。

二叉树的逻辑图如下所示:

特殊的二叉树 

在所有的二叉树中,有那么两种特殊的二叉树满二叉树完全二叉树

满二叉树

每一层结点都达到最大值的二叉树就是满二叉树。

如下图所示:

对于满二叉树而言,一个具有k层的满二叉树的结点个数为2^k-1个。 

完全二叉树

完全二叉树是由满二叉树引申出来的,当一棵高度为k的二叉树的所有结点都能连续地、和高度为k的满二叉树中的节点一 一对应,这棵树就是完全二叉树。

  • 满二叉树是一种特殊的完全二叉树。

二叉树的性质

性质一

对任何一棵二叉树,如果度为0其叶结点个数为n0,度为2的分支结点个数为n2,则有 n0 = n2+1。

性质二

若规定根结点的层数为第 1 层:

  • 则一棵非空二叉树的第 i 层上最多有2^(i-1)个结点。
  • 则深度为 h 的二叉树的最大结点数是2^h-1
  • 若规定根节点的层数为第1层,具有n个结点的满二叉树的深度为h。

性质三 

对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为 i 的结点有以下结论:

  • 若 i > 0,序号为 i 的结点的双亲结点的编号为 (i-1) / 2。(若i==0,i为根结点,无双亲结点)
  • 若2*i+1 < n,左孩子序号为2*i+1;若2*i+1 >= n,则无左孩子。
  • 若2*i+2 < n,右孩子序号为2*i+2;若2*i+2 >= n,则无右孩子。

二叉树的存储

对于二叉树,一般可以使用两种存储结构来存储,分别是顺序存储结构链式存储结构

顺序存储

二叉树顺序存储指的是使用顺序结构存储二叉树,其实就是使用数组存储;具体做法是对二叉树的每个结点从0开始编号,数据存储在和编号一致的数组下标空间上。

上述性质三其实就是二叉树顺序存储的性质。

使用数组存储二叉树的时候,数据构成的集合在逻辑上是二叉树,物理空间上使用的是数组存储。

完全二叉树顺序存储示意图: 

使用数组存储二叉树有个很明显的缺点就是,当存储的二叉树不是完全二叉树的时候,会有空间的浪费,并且这种浪费是不能避免的。 

非完全二叉树顺序存储示意图:

所以:使用数组存储二叉树的时候,只适合存储完全二叉树。

在实际应用中,只有堆才会使用数组存储二叉树,后面讲解。

链式存储

二叉树链式存储指的是用链表来存储二叉树。具体的做法是链表中每个结点由3个域组成,数据域和左右指针域,左右指针域分别用来存储左孩子的地址和右孩子的地址。

二叉树结点表示:

二叉树链式存储结构示意图: 

http://www.yayakq.cn/news/451421/

相关文章:

  • 徐州 商城网站建设上海网站建设 s
  • 网站设计客户端如何用两个版本的wordpress
  • 关于水果的网站开发用了mip的网站
  • 深圳珠宝网站建设风向 网站
  • 安阳 网站建设个人备案的网站能做盈利吗
  • 怎么做房地产网站网页设计网站布局分析
  • 市桥做网站网站建
  • 西安市长安区规划建设局网站wordpress木马检测
  • 网站上海备案查询系统江都建设集团有限公司官方网站
  • 网站建设公司山西微软手机做网站服务器
  • 网站权重优化wordpress ajax顶踩
  • 有了域名后怎么完成网站建设上海网站推广营销设计
  • 产品展示的手机网站商贸公司寮步网站建设价钱
  • 中国建设网站微信指数查询
  • 网站建设与管理 试题响应式网站开发的特点
  • 黄石有没有做网站的找工程项目的平台
  • 月子会所网站源码手机短视频制作软件app
  • 洪栾单页网站建设卡盟网站专用主机
  • 湖南智能网站建设费用河南浪博网站开发
  • 婚庆公司网站模板郑州抖音seo推广
  • 专业网站建设费用包括哪些wordpress中headcode
  • 北京专业网站制作价格文化建设的意义
  • 阿里云做的网站wordpress上传doc文件大小
  • 悦诗风吟网站建设策划书dw做网站字体 别人电脑显示
  • 网站加载慢wordpress画廊
  • 东莞市手机网站建设多少钱wordpress 按钮插件
  • 企业门户网站开发要多少钱有人说做网站赌
  • 自己做网站建议在网站里面如何做支付工具
  • 做二手车有哪些网站有哪些手续建站免费建站平台
  • 河南新蔡有做网站建设的吗国网法治建设网站