树与二叉树中文课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《树与二叉树中文课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 中文 课件
- 资源描述:
-
1、第第6章章 树与二叉树树与二叉树 6.1 树的概念和运算树的概念和运算6.2 二叉树二叉树6.3 树和森林树和森林6.4 树的典型应用树的典型应用6.5 本章小结本章小结6.1 树的概念和运算 树形结构是线性结构的拓广。除了首元(唯一存在,在树形结构中称为“根”节点)没有前驱元素以外,树中其他所有元素(节点)都有且只有一个直接前驱元素(父节点);直接后继元素则没有限制:没有直接后继元素的节点(叶节点)可以有多个;存在直接后继元素的节点,其直接后继元素的个数也可以有多个。6.1.1 树的定义与表示 树的定义:树的逻辑结构可以这样描述:树是包含N(N0)个节点的有穷集合D,且在D上定义了一个关系R
2、,关系R满足以下条件:(1)有且仅有一个节点e0D,它对于关系R来说没有前驱,节点e0称作树的根。(2)除节点e0外,D中的每个节点对于关系R来说都有且仅有一个前驱。(3)除节点e0外的任何节点eS,都存在一个节点序列(e0,e1,em),其中e0就是树根,且em=e,有序对R(1im)。这样的节点序列称为从根到节点e的一条路径。树的递归定义:树是由一个或多个节点组成的有限集T,它满足下面两个条件:(1)有一个特定的节点称之为根;(2)其余的节点分成m(m0)个互不相交的有限集T1,T2,Tm,其中每个集合本身又是一棵树,称T1,T2,Tm为根的子树。递归是树的固有属性树的表示:体现树形结构中
3、分支和层次的特性。ABCDEFGHBGFHDECAABCDEFHG(b)文式图表示方法(a)倒置的树形图表示方法(c)凹入表的表示方法图6.2树形结构中分支与层次特性的表示本书中描述树形结构 的方式6.1.2 树的基本术语 节点 节点的度 叶子或终端节点 非终端节点或分支节点 内部节点 树的度孩子 双亲 兄弟祖先 子孙 节点的层次 树的深度或高度有序树无序树森林6.1.3 树的ADTADT Tree 数据对象为D:D是具有相同特性的数据元素的集合 数据间的关系R:(1)若D为空集,则称为空树;(2)若D为非空集且仅含有一个数据元素,则R为空集,树只包含一个根节点;允许空树(即树中没有一个节点的
4、树)存在(3)若D为非空集且含有不止一个数据元素,则R=H,H是同时满足如下条目的二元关系:(3.1)D中存在唯一的一个称为根的数据元素r,它在关系H下无前驱;(3.2)D-r,存在D-r的一个划分D1,D2,Dm(m0),对任意jk(1j,km)有DjDk=,且对任意的i(1im),惟一存在数据元素xiDi有H;(3.3)对应于D-r的划分,H-,有惟一的一个划分H1,H2,Hm(m0),对任意jk(1j,km)有HjHk=,且对任意的i(1im),Hi是Di上的二元关系,(Di,Hi)是一棵符合本定义的树,称为根r的子树。几种基本操作:treeCreate(&tree)treeDestro
5、y(&tree)treeClear(&tree)treeEmpty(tree)treeWidth(tree)创建一棵树tree销毁一棵已有的树tree创建一棵树tree判树是否为空求树的度 treeDepth(tree)treeRoot(tree)treeInsert(&tree,elem)treeDelete(&tree,elem)求树的高度(深度)求树的根在树tree中,按照某种规则将元素elem插入到树中合适位置在树tree中,按照某种规则将树中元素elem删除 treeTraverse(tree,visit)treeGetParent(tree,elem,&parent)treeGet
6、Child(tree,parent,order,&child)遍历树tree各元素,并用visit代表的操作处理元素数据在树tree中求节点elem的父节点,并将结果放入parent中 说明:在树tree中求节点parent的第order个子节点,并将结果放入child中 treeSetChild(tree,parent,order,child)在树tree中设置节点parent的第order个子节点,待设置的值已经放入child中6.2 二叉树 6.2.1 二叉树的定义与基本运算 二叉树是一个集合T;它可以是空集,也可以是一个由节点组成的有限集。同时,集合T具有下列的性质:(1)如果T是空集
7、,则称T是空的二叉树。(2)如果T是有限集,则T由一个特定的、称之为根的节点,以及称为该根的两个互不相交的左子树和右子树构成,同时这两棵子树亦是二叉树。递归定义二叉树可以有5种基本形态,(a)空 二 叉 树(b)只 含 根 结 点 二 叉 树(c)右 子 树 为 空 的 二 叉 树(d)左、右 子 树 非 空 空 的 二 叉 树(e)左 子 树 为 空 的 二 叉 树图 6.3 二 叉 树 的 五 种 基 本 形 态rootrootrootroot二叉树的基本运算 与树的基本运算相类似 详见二叉树的ADT说明6.2.2 二叉树的性质 性质(1):在二叉树的第i层上至多有2i-1个节点(i1)。
8、性质(2):深度为k的二叉树至多有2k-1个节点(k 1)。性质(3):对任何一棵二叉树T,如果其叶节点数为n0,度为2的节点数为n2,则n0=n2+1。特殊形态的二叉树:完全二叉树和满二叉树。满二叉树:一棵深度为k且有2k-1个节点的二叉树。特点:每一层上的节点数都达到了最大节点数。完全二叉树:(1)叶子节点只可能在层次最大的两层上出现;(2)对任一节点,若其右分支下的子孙节点的最大层次为k,则其左分支下的子孙的最大层次不小于k。满二叉树是完全二叉树,但完全二叉树不一定是满二叉树。12453671245361245312431241243(b)完全二叉树(a)满二叉树(c)完全二叉树(d)完
9、全二叉树(e)非完全二叉树(f)非完全二叉树图6.4 特殊形状的二叉树35完全二叉树的两个重要特性:性质(4):具有n个节点的完全二叉树的深度为log2n+1。性质(5):如果对一棵有n个节点的完全二叉树(其深度为 log2n+1)的节点按层序编号(从第1层到第 log2n+1层,每层从左到右),则对任一节点i(1in),有:如果i=1,则节点i是二叉树的根,无双亲;如果i 1,则其双亲PARENT(i)是节点 i/2。如果2i n,则节点i无左孩子(节点i是叶子节点);否则其左孩子LCHILD(i)是节点2i。如果2i+1n,则节点i无右孩子;否则其右孩子RCHILD(i)是节点2i+1。6
10、.2.3 二叉树的存储结构 顺序存储 以节点在向量中的相对位置来表示节点间的关系。不足:一般的二叉树也必须按完全二叉树的形式来存储,势必会造成存储的浪费。53214(a)二叉树T221145345321453(b)二叉树T的单指针存储(c)二叉树T的双指针存储(d)二叉树T的三指针存储图6.6 二叉树链式存储结构示例rootrootroot 链式存储 单叉链表 三叉链表 二叉链表常用链式存储结构:二叉链表6.2.4 二叉树操作的实现 遍历(周游)算法 深度优先遍历:先序遍历:若二叉树为空,则空操作;否则 (1)访问根节点;(2)先序遍历左子树;(3)先序遍历右子树。中序遍历:若二叉树为空,则空
展开阅读全文