树和二叉树的存储结构.ppt_第1页
树和二叉树的存储结构.ppt_第2页
树和二叉树的存储结构.ppt_第3页
树和二叉树的存储结构.ppt_第4页
树和二叉树的存储结构.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

100 865 10 树和二叉树 Date1 树和线性结构对照 线性结构树结构 存在唯一的没有前驱 的“首元素“ 存在唯一的没有前驱的 “根结点“ 存在唯一的没有后继 的“尾元素“ 存在多个没有后继的 “叶子“ 其余元素均存在唯一 的“前驱元素“和唯一 的“后继元素“ 其余结点均存在唯一的 “前驱(双亲)结点“和多 个“后继(孩子)结点“ Date2 二叉树 q 二叉树的定义 v是n(n=0)个结点的有限集,其子树分为互不相交的两个集合,分 别称为左子树和右子树,左子树和右子树也是二叉树。 A BC DEI JGH 根结点 左子树 右子树 Date3 v二叉树不是树的特例。 v特点 每个结点至多有二棵子树(即不存在度大于2的结点); 二叉树的子树有左、右之分,且其次序不能任意颠倒。 v基本形态 AA B A B A BC 空二 叉树 只有根结点 的二叉树 右子树 为空 左子 树为 空 左、右子树 均非空 Date4 斜树 1 .所有结点都只有左子 树的二叉树称为左斜树; 2 .所有结点都只有右子 树的二叉树称为右斜树; 3.左斜树和右斜树统称为 斜树。 1. 在斜树中,每一层只有一个结点; 2.斜树的结点个数与其深度相同。 几种特殊形式的二叉树 斜树的特点: A B C A B C Date5 几种特殊形式的二叉树 q 满二叉树 v深度为k且有2k-1个结点的二叉树。 v特点 每一层上的结点数都是最大结点数; 所有的分支结点的度数都为2; 叶子结点都在同一层次上。 1 23 11 45 891213 67 101415 Date6 几种特殊形式的二叉树 q 完全二叉树 v若对满二叉树的结点从上到下从左至右进行编号,则深度为k且有n 个结点的二叉树称为完全二叉树,当且仅当其每一个结点都与深度 为k的满二叉树的编号从1到n一一对应时。 v特点 叶子结点只可能在层次最大的两层上出现; 前k-1层中的结点都是“满”的,且第 k 层的结点都集中在左 边。1 23 11 45 8912 67 10 Date7 判断是否为完全二叉树,说明理由。 1 23 45 67 1 23 456 思考:满二叉树与完全二叉树的关系? Date8 在满二叉树中,从最后 一个结点开始,连续去 掉任意多个结点,即是 一棵完全二叉树。 A 1 5 23 467 910 BC DEFG HIJK 11 L 12 M 13 N 14 O 158 A 1 5 23 467 8910 BC DEFG HIJ 不是完全二叉树,结点 10与满二叉树中的结点 10不是同一个结点 Date9 二叉树的性质 q 性质1:在二叉树的第 i 层至多有 2i-1 个结点 ( i1)。 q 性质2:深度为 k 的二叉树至多有 2k-1 个结点。 q 性质3:对于任何一棵二叉树T,若其终端结点(叶子)数为 n0 ,度为1的结点数为n1,度为2的结点数n2, 则n0= n2+1。 Date10 q 性质4:具有n个结点的完全二叉树的深度是log2n+1。 q 性质5:如果对一棵有n个结点的完全二叉树的结点按层序 编号,则对任一结点i(1in),有: v如果i=1,则结点i是二叉树的根,无双亲;如果i1, 则其双亲是i/2; v如果2in,则结点i无左孩子;如果2in,则其左孩子 是2i; v如果2i+1n,则结点i无右孩子;如果2i+1n,则其右 孩子是2i+1。 Date11 二叉树的存储结构 q 顺序存储结构 v用一组地址连续的存储单元存储二叉树中的数据元素。 完全二叉树,只要从根起按层序存储即可。将完全二叉树上编 号为 i 的结点元素存储在一维数组中下标为 i-1 的分量中。 一般的二叉树,可对照完全二叉树的编号进行相应的存储,但 在没有结点的分量中需填充空白字符(例如填充0)。 v顺序存储表示 #define MAX_TREE_SIZE 100 /最大结点数 Typedef TElemType SqBiTreeMAX_TREE_SIZE; /0号根结点 SqBiTree bt; Date12 F B A GED C HIJKL 例如: bt3的双亲为3/2=1,即在 bt1中; 其左孩子在bt2i=bt6中; 其右孩子在bt2i+1=bt7中 。 如何反映结点之 间的逻辑关系? A 1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9 J 10 K 11 L 12 struct BiTNode *lchild,*rchild; BiTNode,*BiTree; struct BiTNode *lchild, *rchild; BiTNode ,*Bitree; lchilddatarchild Date23 试用二叉链表的方法创建二叉树 Date24 A B CD EF G A B C D E F G 在n个结点的二叉链表中,有n+1个空指针域。 Date25 q 三叉链表 v结点包括数据域,左子树指针域、双亲域和右子树指针域 。 lchilddataparentrchild v三叉链表的存储表示 typedef struct TriTNode TElemT

温馨提示

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

评论

0/150

提交评论