数据库学习课件 第六节 树.ppt

  1. 1、本文档共135页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
湖南科技大学 数据结构 胡蓉 树(tree)是n(n=0)个结点的有限集T,其中:有且仅有一个特定的结点,称为树的根(root)。 当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree) 特点: ①非空树中至少有一个结点——根 ②树中各子树是互不相交的集合 树的表示法主要有5种 一对多(1:n),有多个直接后继(如家谱树、目录树等等),但只有一个根结点,且子树之间互不相交。 讨论3:树的链式存储方案应该怎样制定? 复原困难 树的运算 要明确: 1. 普通树(即多叉树)若不转化为二叉树,则运算很难实现。 2. 二叉树的运算仍然是插入、删除、修改、查找、排序等,但这些操作必须建立在对树结点能够“遍历”的基础上! 6.2 二叉树 为何要重点研究每结点最多只有两个 “叉” 的树? 二叉树的结构最简单,规律性最强; 可以证明,所有树都能转为唯一对应的二叉树,不失一般性。 二叉树是n(n?0)个结点的有限集,它或为空树(n=0),或由一个根 结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。 特点 ① 每个结点至多有二棵子树(即不存在度大于2的结点) ②二叉树的子树有左、右之分,且其次序不能颠倒 二叉树的抽象数据类型定义(见教材P121-122) 1、满二叉树 定义:一棵深度为k且有2k-1个结点的二叉树。 特点:每一层上的结点数都是最大结点数 2、完全二叉树 定义:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。 特点: (1)叶子结点只可能在层次最大的两层上出现。 (2)对任一结点,若其右分支下子孙的最大层次为L,则其左分支下子孙的最大层次必为L或L+1。 课堂讨论: 对遍历的分析: 注:要实现遍历运算,必须先把二叉树存入电脑内 层次遍历算法(需要利用队列) 严题集6.47 ④ 线索二叉树 何谓线索二叉树? 线索链表的遍历算法 如何建立线索链表? 【 2000年计算机系考研题】给定如图所示二叉树T,请画出与其对应的中序线索二叉树。 补充:二叉树的典型应用 6.5 Huffman树及其应用 w={ 7, 19, 2, 6, 32, 3, 21, 10 }的huffman树 证明: 空指针域=kn0+(k-1)n1+(k-2)n2+…….+(k-(k-1))nk-1 = kn0+kn1+kn2+…….+knk-1-(n1+2n2+…….+(k-1)nk-1) = k(n0+n1+n2+…….+nk-1)-(n1+2n2+…….+(k-1)nk-1 ) 证明有n个结点的树的度为k,空指针域有n(k-1)+1个空链域 因为有: n= n0+n1+n2+…….+nk-1+nk n= n1+2n2+…….+(k-1)nk-1+knk+1 所以,空指针域=k(n-nk)-(n-knk-1) =kn-n+1 =n(k-1)+1 data child1 child2 … Child k degree 方法2 孩子链表:每个结点的孩子结点用单链表存储,再用含n个元素的结构数组指向每个孩子链表 a b c d e f h g i 6 0 1 2 3 4 5 7 8 9 a c d e f g h i b data fc 2 3 ^ 4 5 ^ ^ 9 7 8 ^ 6 ^ ^ ^ ^ ^ 如何找双亲结点 特点: 顺序+链式存储结构; 找孩子容易,找双亲难 0 A -1 1 B 0 2 C 0 3 D 0 4 E 2 5 F 2 6 G 5 data firstchild A B C D E F G 1 2 3 4 5 6 方法3 孩子双亲表示法 parent A B C D E F G A B C E D F G 三、树的二叉链表 (孩子-兄弟)存储表示法 A B C E D F G root 定义结点 除放数据元素外,放两个指针,一个指向该结点的第一个孩子,另一个指向该结点的下一个兄弟; 将树转换成二叉树 A B C D E

文档评论(0)

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

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

1亿VIP精品文档

相关文档