C++程序设计与数据结构基础:第10章 非线性结构_第1页
C++程序设计与数据结构基础:第10章 非线性结构_第2页
C++程序设计与数据结构基础:第10章 非线性结构_第3页
C++程序设计与数据结构基础:第10章 非线性结构_第4页
C++程序设计与数据结构基础:第10章 非线性结构_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三部分第三部分 数据结构基础数据结构基础本章内容 树的基本概念 二叉树的基本概念和性质 二叉树的存储结构 二叉树的遍历 树、森林与二叉树的转换 2 210.1 树的基本概念l 树:是一类非常重要的非线性结构,适合于描述数据元素之间的层次关系。3 3l 树是n(n0)个数据元素的有限集合T。它满足以下两个条件:P2671.有且仅有一个特定的称为根的元素。 一棵树中,有且仅有一个根结点。 根是只有后件没有前件的结点。 除根结点外,其它结点均有且仅有一个前件。 每个结点均可以有任意多个后件,没有后件的结点称为叶子结点。 除根结点和叶子结点外,其余称内结点。2.其余元素分为m(m0)个互不相交的有限

2、集合T1、T2、Tm,其中每个集合又都是一棵树并称其为根的子树。数学上的定义4 4A AB BE EF FK KL LC CG GMMD DHHNNI IJ JA AB BE EL L5 5树的常用术语l 双亲、子女、兄弟、边: 若结点y是结点x的一棵子树的根,则x称做y的“双亲”(parents),y称做x的“子女”(child) 有序对称做从x到y的“边”。 具有同一双亲的结点称为“兄弟”。l 路径、路径长度: 若树中存在着一个结点的序列k1 k2kj,使ki是ki+1(1i0,则ki双亲结点的编号为 (i-1)/2; 若i=0,则ki是根结点。 若2i+1n,则ki左子女结点的编号是2i

3、+1,否则ki无左子女。若2i+2n,则ki右子女结点的编号为2i+2,否则ki无右子女。1616二叉树的存储结构 l 顺序存储结构 对完全二叉树,利用性质5,将其所有结点按编号顺序依次存储在一维数组里。 对一般二叉树,需要加上一些并不存在的“虚结点”,转换为完全二叉树的形式。 1717l 二叉树的链式存储结构链接存储时结点的结构lchilddatarchildA AB BC C F F D D E EG GHHrootroot存储结构逻辑结构1818二叉树的遍历l 先序遍历 :访问根结点(D),先序遍历左子树(L),先序遍历右子树(R)。 ABDGECFl 中序遍历:LDR DGBEAFCl 后序遍历:LRD GDEBFCAl 层次遍历:按层数由小到大、同一层从左到右顺序依次访问二叉树的各个结点。 ABCDEFG1919树、森林与二叉树的转换 l 树到二叉树的转换1. 在所有的兄弟之间加一条连线;2. 对每个结点,除了保留与最左边子女的连线外,去掉与其他子女连线;3. 将保留下来的边作为左子树的边,兄弟间的连线作为右子树的边。2020l 森林到二叉树的转换1. 先将森林中的每一棵树变为二叉树,2. 然后将各二叉树的根结点看成兄弟,用线把它们连到一起,3. 经整理后可得到相应的二叉树。2121l 二叉树到树、森林的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论