第五篇 章 树_1 数据结构 .pptVIP

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五篇 章 树_1 数据结构 .ppt

第5章 树;第5章 树;树形结构; 树是n(n≥0)个结点的有限集。 当n=0时称为空树;;A; 孩子结点:结点的子树的根称为该结点的孩子结点; 双亲结点:相应地,该结点称为孩子的双亲结点; 兄弟:具有同一父结点的子结点互称兄弟; 堂兄弟:其双亲在同一层的结点互为堂兄弟; 祖先结点:从根到该结点所经分支上的所有结点; 子孙结点:以某结点为根的子树中任一结点都称为 该结点的子孙;;结点的层次:从根结点到该结点所经过的路径长度加1; 树的深度:树中叶子结点具有的最大层次数; 有序树:如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树; 第一个孩子:在有序树中,最左边的子树的根称为第一个孩子; 最后一个孩子:最右边 的子树的根称为最后 一个孩子;;森林:是m(m ≥0)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。;5.1.3 树的表示方法;5.1 树的基本概念;A( B(E, F(K, L)), C(G), D(H, I, J(M)) );4.凹入表示;5.1.4 树的存储结构;A;2. 多重链表表示法 每个结点可能含有 m个孩子,即每个结点发出m 个链,分别指向它的一个孩子。; 由于树中每个结点可能有多棵子树,则在采用链式存储结构时可用多重链表,即每个结点有多个指针域,其中,每个指针指向一棵子树的根结点。此时,链表中的结点可有如下两种结点格式:; 另一种办法是: 把每个结点的孩子结点排列起来,看成是一个线性表,且以单链表作存储结构,则n个结点有n个孩子链表(叶子的孩子链表为空表)。 而n个头指针又组成一个线性表,为了便于查找,可采用顺序存储结构。;A;A;3. 孩子-兄弟链表表示法 在这种存储方式下,每个结点包括三部分的内容:结点值、指向该结点第一个孩子结点的指针和指向该结点下一个兄弟结点的指针。;5.1 树的基本概念;A; 利用这种存储结构便于实现各种树的操作。首先易于实现找结点孩子等的操作。 例如,若要访问结点x的第i 个孩子,则只要先从firstchild域找到第1个孩子,然后沿着孩子结点的nextsibling域连续走i-1步,便可找到x的第i个孩子。;线性结构;; ??叉树是n (n≥0) 个结点的有限集合,这个集合或是空集,或是由一个根结点以及两棵互不相交的、被称为根的左子树和右子树所组成;左子树和右子树分别又是一棵二叉树。 【特点】: 每个结点至多只有两棵子树, 且二叉树的子树有左右之分,其次 序不能任意颠倒。;A; 显然,二叉树的定义是递归的。;【二叉树的五种基本形态】:;思考:二叉树与度为2的有序树相同吗??; 性质 1 : 在二叉树的第 i 层上至多有2i-1 个结点。(i≥1); 性质 3 : 对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0 = n2+1。;两类特殊的二叉树;完全二叉树:树中所含的 n 个结点和满二叉树中编号为 1 至 n 的结点一一对应。;【辨别完全二叉树】;【完全二叉树 与 满二叉树】;性质 4 : 具有 n 个结点的完全二叉树的深度为 ?log2n? +1 。;性质 5 :; (4) 如果结点i的序号为奇数且不等于1,则它的左兄弟为i-1。 (5) 如果结点i的序号为偶数且不等于n,则它的右兄弟为i+1。 (6) 结点i所在层数为 ? log2i ? +1。;2i; 二叉树的链式存储表示; 对于完全二叉树,用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素。;【一般二叉树的顺序存储】;; 试采用顺序存储方法画出所示二叉树的存储结构;A;typedef struct btnode { // 结点结构 int data; struct btnode *lchild, *rchild; // 左右孩子指针 } BTNode, *BiNTree;; 以字符串的形式 根-左子树-右子树 定义一棵二叉树;【例如】;void createbintree(BINTREE *t) /* 按先序遍历创建二叉链表*/ { int a; scanf(″%d ″,a); /* 如果读入0,创建空树*/ i f(a==0) *t=NULL; else { *t=(BTNODE *)m

文档评论(0)

youngyu0329 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档