第5章、树和二叉树分析.ppt

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章、树和二叉树分析

第5章、树和二叉树 主要内容 树的基本概念 二叉树及性质 二叉树的遍历 二叉树的存储结构 树、森林与二叉树的转化 哈夫曼树与哈夫曼编码 树的引入 某家族的血缘关系 承德石油高等专科学校组织结构图 由以上抽象出模型 树的基本概念 树:是n个结点的有限集合T。 其中: 在一棵非空(n0)树中 有且仅有一个称作根的结点; 其余结点为m个(m≥0)互不相交的集合T1,T2…Tm,每一个集合本身又是一棵树,并称为根的子树。 当n=0时,称为空树。 有限集合T1,T2……Tm “互不相交”,即任意两个集合不能有相重的结点。 树的各个结点有层次关系。 树的表示法 图示法 二元组法 集合包含法 广义法 凹入法 树示意图 基本术语 结点 分支结点:树型结构中有后继结点的结点 终端结点(叶子结点):没有后继结点的结点 结点的度 结点的度:该结点后继结点的个数 树的度:树中结点度数的最大值 双亲结点、孩子结点 兄弟结点 树的深度(高度):是树的最大层次 有序树和无序树 如果树中结点的各子树从左至右是有次序不能交换的,那么该树称为有序树,否则称为无序树。 森林 M棵互不相交的树的集合称为森林 树的存储结构 双亲表示法 用一个一维数组来存储树的结点 找某个结点的双亲很方便,但是找它的孩子结点或兄弟结点时,需要遍历整个数组,比较麻烦 孩子表示法 用指针表示出每个结点的孩子结点。 把每个结点的孩子结点排列起来构成一个单链表 每个结点由两个域组成:数值域data和指针域children 左孩子右兄弟表示法 每个结点设置3个域:孩子域、数值域和兄弟域 这种链表形式称为“二叉链表” 可以很方便地查找某个结点的孩子和兄弟,是使用最多的树的存储结构 二叉树 二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的、互不交叉的二叉树组成 二叉树的5种形态 二叉树的性质 性质1:在二叉树的第 i (i≥1)层上至多有2i-1 个结点。 性质2:高度为 h 的二叉树上至多含 2h-1 个结点(h≥1)。 证明 性质3:对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0 = n2+1。 两类特殊的二叉树 满二叉树 若第 k 层有 2k-1 个结点,则称此层的结点数是满的;当二叉树中的每一层都是满的时,称为满二叉树。 深度为h的满二叉树有2h-1个结点。 完全二叉树 完全二叉树是由满二叉树而引出来的。对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 性质4:具有 n 个结点的完全二叉树的高度为[log2n]+1。 说明: [x]表示不大于x的最大整数。 性质5:若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点: 当i=1时,该结点为根结点,它无双亲结点 当i1时,该结点的双亲结点编号为[i/2] 当2in时,则有编号为2i的左孩子,否则没有左孩子 当2i+1n时,则有编号为2i+1的右孩子,否则没有右孩子 二叉树的遍历 二叉树的遍历 指按一定规律访问二叉树的每个结点,且每个结点只被访问一次的过程。 这里的访问可以是输出、比较、更新、查看元素内容等等各种操作。 二叉树的遍历方式分为两大类:一类按根、左子树和右子树三个部分进行访问;另一类按层次访问。 任一结点的遍历次序: ① 左、根、右;③ 根、左、右;⑤ 左、右、根; ② 右、根、左;④ 根、右、左;⑥ 右、左、根; 前序遍历 (Preorder Traversal) 若二叉树为空,则空操作 否则 访问根结点(D) 前序遍历左子树(L) 前序遍历右子树(R) 中序遍历 (Inorder Traversal) 若二叉树为空,则空操作 否则 中序遍历左子树(L) 访问根结点(D) 中序遍历右子树(R) 后序遍历 (Postorder Traversal) 若二叉树为空,则空操作 否则 后序遍历左子树(L) 后序遍历右子树(R) 访问根结点(D) 练习1: 练习2:已知一棵二叉树的先序序列与中序序列分别如下,试画出此二叉树。 先序序列:ABCDFGI 中序序列:CBDAGFI 二叉树的存储结构 二叉树的顺序存储结构 用一组连续的存储单元存放二叉树中的元素,这对于满二叉树和完全二叉树是非常合适的。 非常适合满二叉树和完全二叉树 结点的编号恰好与数组元素的下标相对应 根据二叉树的性质5,结点在一维数组中的相对位置隐含着结点之间的关系,因此在数组中可以方便的由某结点的下标i找到它们的双亲结点i/2,或左右孩子结点2i,2i+1。 想一想:一般二叉树如何用数组法存储? 一般二叉树用数组法存储

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档