中山大学树和二叉树最终版课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《中山大学树和二叉树最终版课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中山大学 二叉 最终版 课件
- 资源描述:
-
1、Data StructureData StructurePage 12023-1-10q学习目标学习目标v领会树和二叉树的类型定义,领会树和二叉树的类型定义,理解树和二叉树的结构理解树和二叉树的结构差别差别。v熟记熟记二叉树的主要特性二叉树的主要特性,并掌握它们的证明方法。,并掌握它们的证明方法。v掌握掌握二叉树的各种遍历算法二叉树的各种遍历算法,并能灵活运用遍历算法,并能灵活运用遍历算法实现二叉树的其它操作。实现二叉树的其它操作。v熟练掌握二叉树各种熟练掌握二叉树各种存储结构存储结构及其建立的算法。及其建立的算法。Data StructureData StructurePage 22023-
2、1-10q重点和难点重点和难点v重点:二叉树和树的重点:二叉树和树的遍历遍历及其应用。及其应用。v难点:编写实现难点:编写实现二叉树和树的各种操作的递归算法二叉树和树的各种操作的递归算法。q知识点知识点v树的类型定义、二叉树的类型定义树的类型定义、二叉树的类型定义v二叉树的存储表示二叉树的存储表示v二叉树的遍历以及其它操作的实现二叉树的遍历以及其它操作的实现Data StructureData StructurePage 32023-1-10v社会的组织结构社会的组织结构v家族的族谱家族的族谱v计算机中的目录组织计算机中的目录组织描述层次结构,是一种一对多的逻辑关系描述层次结构,是一种一对多的
3、逻辑关系Data StructureData StructurePage 42023-1-10树型结构是一类非常重要的非线性数据结构。树型结构是一类非常重要的非线性数据结构。Data StructureData StructurePage 52023-1-10q 树树(tree)(tree)v是是n(nn(n 0)0)个结点的有限集个结点的有限集T T;v在任意一棵非空树中,在任意一棵非空树中,有且仅有一个特定的结点,称为树的有且仅有一个特定的结点,称为树的根根(root)(root);当当n1n1时,其余结点可分为时,其余结点可分为m(m0)m(m0)个个互不相交互不相交的有限集的有限集T1
4、,T2,T1,T2,TmTm,其中每一个集合本身又是一棵树,称为根的,其中每一个集合本身又是一棵树,称为根的子子树树(subtreesubtree)。v特点特点:非空树中至少有一个结点非空树中至少有一个结点根;根;树中各子树是互不相交的集合。树中各子树是互不相交的集合。Data StructureData StructurePage 62023-1-10AABCDEFGHIJKLM只有根结只有根结点的树点的树有子树有子树的树的树根根子树子树Data StructureData StructurePage 72023-1-10ADT ADT TreeTree 数据对象:数据对象:D D是具有相同
5、特性的数据元素的集合。是具有相同特性的数据元素的集合。数据关系:数据关系:若若 D D 为空集,则称为为空集,则称为空树空树;若若 D D 中仅含一个数据元素,则关系中仅含一个数据元素,则关系R R为空集为空集;若若 D D 中含多于一个数据元素,则中含多于一个数据元素,则 R=HR=H,H H是如下二元关系:是如下二元关系:(1)(1)在在D D中存在唯一的称为根的数据元素中存在唯一的称为根的数据元素 rootroot,它在关系,它在关系H H下无前驱;下无前驱;(2)(2)当当n1n1时,其余数据元素可分为时,其余数据元素可分为 m(m0)m(m0)个互不相交的个互不相交的(非空非空)有限
6、有限 集集 T1,T2,T1,T2,Tm,Tm,其中每一个子集本身又是一棵符合本定义的树,其中每一个子集本身又是一棵符合本定义的树,称为根称为根 root root 的子树,每一棵子树的根的子树,每一棵子树的根xixi都是根都是根rootroot的后继,即的后继,即 H H,i=1,2,i=1,2,m,m。Data StructureData StructurePage 82023-1-10基本操作:基本操作:InitTree(&TInitTree(&T););操作结果:构造空树操作结果:构造空树 T T。CreateTree(&T,definitionCreateTree(&T,defini
7、tion););初始条件:初始条件:definition definition 给出树给出树T T的定义。的定义。操作结果:按操作结果:按 definition definition 构造树构造树 T T。DestroyTree(&TDestroyTree(&T););初始条件:树初始条件:树 T T 存在。存在。操作结果:销毁树操作结果:销毁树 T T。TreeEmpty(TTreeEmpty(T););初始条件:树初始条件:树 T T 存在。存在。操作结果:若操作结果:若 T T 为空树,则返回为空树,则返回 TRUETRUE,否则返回,否则返回 FALSEFALSE。Data Struc
8、tureData StructurePage 92023-1-10TreeDepth(TTreeDepth(T););初始条件:树初始条件:树T T存在。存在。操作结果:返回操作结果:返回T T的深度。的深度。Root(T);Root(T);初始条件:树初始条件:树 T T 存在。存在。操作结果:返回操作结果:返回 T T 的根。的根。Value(T,cur_e);Value(T,cur_e);初始条件:树初始条件:树 T T 存在,存在,cur_e cur_e 是是 T T 中某个结点。中某个结点。操作结果:返回操作结果:返回 cur_e cur_e 的值。的值。Data Structure
9、Data StructurePage 102023-1-10Parent(T,cur_e);Parent(T,cur_e);初始条件:树初始条件:树 T T 存在,存在,cur_e cur_e 是是 T T 中某个结点。中某个结点。操作结果:若操作结果:若 cur_e cur_e 是是T T的非根结点,则返回它的双亲,的非根结点,则返回它的双亲,否则返回否则返回“空空”。LeftChild(TLeftChild(T,cur_e);,cur_e);初始条件:树初始条件:树 T T 存在,存在,cur_e cur_e 是是 T T 中某个结点。中某个结点。操作结果:若操作结果:若 cur_e cu
10、r_e 是是T T的非叶子结点,则返回它的最左的非叶子结点,则返回它的最左 孩子,否则返回孩子,否则返回“空空”。RightSibling(TRightSibling(T,cur_e);,cur_e);初始条件:树初始条件:树 T T 存在,存在,cur_e cur_e 是是 T T 中某个结点。中某个结点。操作结果:若操作结果:若 cur_e cur_e 有右兄弟,则返回它的右兄弟,否则有右兄弟,则返回它的右兄弟,否则 返回返回“空空”。Data StructureData StructurePage 112023-1-10TraverseTree(TTraverseTree(T,visit
11、();,visit();初始条件:树初始条件:树T T存在,存在,visit visit 是对结点操作的应用函数。是对结点操作的应用函数。操作结果:按某种次序对操作结果:按某种次序对 T T 的每个结点调用函数的每个结点调用函数 visit()visit()一次且至多一次。一旦一次且至多一次。一旦 visit()visit()失败,则操作失败,则操作 失败。失败。Assign(T,cur_e,value);Assign(T,cur_e,value);初始条件:树初始条件:树T T存在,存在,cur_e cur_e 是是 T T 中某个结点。中某个结点。操作结果:结点操作结果:结点 cur_e
12、cur_e 赋值为赋值为 valuevalue。ClearTree(&TClearTree(&T););初始条件:树初始条件:树 T T 存在。存在。操作结果:将树操作结果:将树 T T 清为空树。清为空树。Data StructureData StructurePage 122023-1-10InsertChild(&TInsertChild(&T,&p,i,c);,&p,i,c);初始条件:树初始条件:树 T T 存在,存在,p p 指向指向T T中某个结点,中某个结点,1ip 1ip 所所 指结点的度指结点的度1 1,非空树,非空树 c c 与与 T T 不相交。不相交。操作结果:插入操
13、作结果:插入 c c 为为 T T 中中 p p 所指结点的第所指结点的第 i i 棵子树。棵子树。DeleteChild(&TDeleteChild(&T,&p,i);,&p,i);初始条件:树初始条件:树 T T 存在,存在,p p 指向指向 T T 中某个结点,中某个结点,1ip1ip 指结点的度。指结点的度。操作结果:删除操作结果:删除 T T 中中 p p 所指结点的第所指结点的第 i i 棵子树。棵子树。ADT Tree ADT TreeData StructureData StructurePage 132023-1-10q 基本术语基本术语v结点结点(node)(node):包
14、含一个数据元素及若干指向其子树的分支。:包含一个数据元素及若干指向其子树的分支。v结点的度结点的度(degree)(degree):结点拥有的子树数。:结点拥有的子树数。v叶子叶子(leaf)(leaf):度为:度为0 0的结点。的结点。v分支结点分支结点:度不为:度不为0 0的结点。的结点。v树的度树的度:一棵树中各结点的度的最大值。:一棵树中各结点的度的最大值。v孩子孩子(child)(child):结点的子树的根称为该结点的孩子。:结点的子树的根称为该结点的孩子。v双亲双亲(parents)(parents):孩子结点的上层结点。:孩子结点的上层结点。v兄弟兄弟(sibling)(sib
15、ling):同一双亲的孩子之间互称为兄弟。:同一双亲的孩子之间互称为兄弟。v祖先祖先:从根结点到该结点所经分支上的所有结点。:从根结点到该结点所经分支上的所有结点。v子孙子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。:以某结点为根的子树中的任一结点都称为该结点的子孙。Data StructureData StructurePage 142023-1-10v结点的层次结点的层次(level)(level):从根结点算起,根为第一层,根的孩子为:从根结点算起,根为第一层,根的孩子为 第二层第二层。v堂兄弟堂兄弟:其双亲在同一层的结点互为堂兄弟。:其双亲在同一层的结点互为堂兄弟。v深度深度
16、(depth)(depth):树中结点的最大层次。:树中结点的最大层次。v有序树有序树:将树中结点的各子树看成从左至右是有次序的,即不能:将树中结点的各子树看成从左至右是有次序的,即不能 互换。互换。v无序树无序树:将树中结点的各子树看成从左至右是无次序的,即可以:将树中结点的各子树看成从左至右是无次序的,即可以 互换。互换。v森林森林(forest)(forest):m(mm(m 0)0)棵互不相交的树的集合。棵互不相交的树的集合。Data StructureData StructurePage 152023-1-10ABCDEFGHIJKLM结点结点A A的度:的度:结点结点B B的度:的
17、度:结点结点M M的度:的度:叶子:叶子:结点结点A A的孩子:的孩子:结点结点B B的孩子:的孩子:结点结点I I的双亲:的双亲:结点结点L L的双亲:的双亲:结点结点B B,C C,D D为为结点结点K K,L L为为树的度:树的度:结点结点A A的层次:的层次:结点结点M M的层次:的层次:树的深度:树的深度:结点结点A A是结点是结点F F,G G的的结点结点F F,G G为为3203B,C,DE,F14K,L,F,G,M,I,JDE兄弟兄弟兄弟兄弟4堂兄弟堂兄弟祖先祖先Data StructureData StructurePage 162023-1-10q 树的表示方法树的表示方法
18、v树形表示法:树形表示法:自然界倒长的树;自然界倒长的树;v文氏表示法:文氏表示法:用集合表示;用集合表示;v凹入表示法:凹入表示法:类似书目;类似书目;v嵌套括号表示法:嵌套括号表示法:广义表表示法。广义表表示法。树形树形文氏文氏ABDCG凹入凹入ABCDG嵌套括号嵌套括号(A(B,C(G),D)Data StructureData StructurePage 172023-1-10树和线性结构对照树和线性结构对照线性结构线性结构树结构树结构存在存在唯一的没有前驱唯一的没有前驱的的 首元素首元素 存在存在唯一的没有前驱的唯一的没有前驱的 根结点根结点 存在存在唯一的没有后继唯一的没有后继的的
19、 尾元素尾元素 存在存在多个没有后继多个没有后继的的 叶子叶子 其余元素均存在其余元素均存在唯一唯一的的 前驱元素前驱元素 和唯一和唯一的的 后继元素后继元素 其余结点均存在其余结点均存在唯一的唯一的 前驱前驱(双亲双亲)结点结点 和和多多个个 后继后继(孩子孩子)结点结点 Data StructureData StructurePage 182023-1-10q 二叉树的定义二叉树的定义v是是n(n=0)n(n=0)个结点的有限集个结点的有限集,其子树分为,其子树分为互不相交的互不相交的两个集合,两个集合,分别称为分别称为左子树和右子树左子树和右子树,左子树和右子树也是二叉树左子树和右子树也
20、是二叉树。ABCDEIJGH根结点根结点左子树左子树右子树右子树Data StructureData StructurePage 192023-1-10v二叉树不是树的特例。二叉树不是树的特例。v特点特点每个结点至多有二棵子树每个结点至多有二棵子树(即不存在度大于即不存在度大于2 2的结点的结点);二叉树的子树有左、右之分,且其次序不能任意颠倒。二叉树的子树有左、右之分,且其次序不能任意颠倒。v基本形态基本形态AABABABC空二空二叉树叉树只有根结点只有根结点的二叉树的二叉树右子树右子树为空为空左子左子树为树为空空左、右子树左、右子树均非空均非空Data StructureData Stru
21、cturePage 202023-1-10二叉树的性质二叉树的性质q性质性质1:在二叉树的第在二叉树的第 i 层至多有层至多有 2i-1 个结点个结点(i1)。证明:i=1,只有根结点,显然成立 设i=k时成立,最多有2k-1个结点 当i=k+1时,最多的结点个数:2k-1*2=2k-1+1=2k=2(k+1)-1Data StructureData StructurePage 212023-1-10二叉树的性质二叉树的性质q性质性质2:深度为深度为 k 的二叉树至多有的二叉树至多有 2k-1 个结点。个结点。证明:二叉树的结点个数为:1+2+2k-1=2k-1Data StructureDa
22、ta StructurePage 222023-1-10二叉树的性质二叉树的性质q 性质性质3 3:对于任何一棵二叉树对于任何一棵二叉树T T,若其终端结点,若其终端结点(叶子叶子)数为数为 n n0 0,度为,度为1 1的结点数为的结点数为n n1 1,度为,度为2 2的结点数的结点数n n2 2,则则n n0 0=n=n2 2+1+1。证明:设n1为T中度为1的结点数,则总结点数:n=n0+n1+n2 (1)另:除根结点外,所有结点都有且仅有一个双亲结点,也就是仅有一个分支进入,若B为分支数,则n=B+1 =n1+2*n2+1 (2)由(1)和(2)有:n1+2*n2 1=n0+n1+n2
23、 故 n0=n2+1;Data StructureData StructurePage 232023-1-10几种特殊形式的二叉树几种特殊形式的二叉树q 满二叉树满二叉树v深度为深度为k k且有且有2 2k k-1-1个个结点的二叉树。结点的二叉树。v特点特点每一层上的结点数都是最大结点数;每一层上的结点数都是最大结点数;所有的分支结点的度数都为所有的分支结点的度数都为2 2;叶子结点都在同一层次上。叶子结点都在同一层次上。123114589121367101415Data StructureData StructurePage 242023-1-10q 完全二叉树完全二叉树v若对满二叉树的结
24、点从上到下从左至右进行编号,则深度为若对满二叉树的结点从上到下从左至右进行编号,则深度为k k且有且有n n个结点的二叉树称为完全二叉树,当且仅当其每一个结点都与深度个结点的二叉树称为完全二叉树,当且仅当其每一个结点都与深度为为k k的满二叉树的编号从的满二叉树的编号从1 1到到n n一一对应时。一一对应时。v特点特点叶子结点只可能在层次最大的两层上出现;叶子结点只可能在层次最大的两层上出现;前前k-1k-1层中的结点都是层中的结点都是“满满”的,且第的,且第 k k 层的结点都集中在左层的结点都集中在左边。边。123114589126710Data StructureData Structu
25、rePage 252023-1-101234567123456思考:满二叉树与完全二叉树的关系?思考:满二叉树与完全二叉树的关系?Data StructureData StructurePage 262023-1-10q 性质性质4 4:具有具有n n个结点的完全二叉树的深度是个结点的完全二叉树的深度是 loglog2 2n n+1+1。证明:证明:假设假设n n个结点的完全二叉树的深度为个结点的完全二叉树的深度为k k,则,则n n的值应大于深度为的值应大于深度为k-1k-1的满二叉树的结点数的满二叉树的结点数2 2k-1k-1-1-1,小于等于深度为小于等于深度为k k的满二叉树的结点数的
展开阅读全文