- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
L11-L14算法分析与数据结构I
第2章 算法分析与数据结构 2.5 其他常用数据结构 广义表表示法 每棵子树构成一个表,每棵树的根的名字作为表的名字放在表的左边,括号内是子树。 (A(B(E,F(I,J)),C,D(G,H))) ? 树形结构的基本术语 1)节点的度 树中的一个节点拥有的子树称为该节点的度。一棵树的度是指该树中节点的最大度数,度为零的节点称为叶子或终端节点,度不为零的节点称为分支节点或非终端节点。除根节点之外的分支节点统称为内部节点。根节点又称为开始节点。 第2章 算法分析与数据结构 2.5 其他常用数据结构 2)孩子和双亲。 树中某个节点的子树之根称为该节点的孩子或儿子,相应地,该节点称为孩子的双亲或父亲。同一个双亲的孩子称为兄弟。 3)祖先和子孙。 若树中存在一个节点序列k1,k2,……,ki,使得ki是ki+1的双亲(1≤i<j),则称该节点序列是从k1到kj的一条路径(Path)或道路。则称k1是kj的祖先,kj是k1的子孙。 4)节点的层数和树的高度。 节点的层数从根算起:根的层数为1,也有很多书中将树根的层数定义为0。其余节点的层数等于其双亲节点的层数加1。双亲在同一层的节点互为堂兄弟。树中节点的最大层数称为树的高度或深度。 第2章 算法分析与数据结构 2.5 其他常用数据结构 5)有序树和无序树。 若将树中每个节点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树;否则称为无序树。 6)森林。 森林是m(m≥0)棵互不相交的树的集合。树和森林的概念相近。删去一棵树的根,就得到一个森林;反之,加上一个节点作树根,森林就变为一棵树。 第2章 算法分析与数据结构 2.5 其他常用数据结构 ? 树形结构的逻辑特征 1)树中任意一节点都可以有零个或多个直接后继(即孩子)节点,但至多只能有一个直接前趋(即双亲)节点。 2)树中只有根节点无前趋,它是开始节点;叶节点无后继,它们是终端节点。 3)祖先与子孙的关系是对父子关系的延拓,它定义了树中节点之间的纵向次序。 4)有序树中,同一组兄弟节点从左到右有长幼之分。 第2章 算法分析与数据结构 2.5 其他常用数据结构 ? 二叉树 二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。 二叉树的5种基本形态 第2章 算法分析与数据结构 2.5 其他常用数据结构 二叉树与无序树不同 二叉树中,每个节点最多只能有两棵子树,并且有左右之分。 在有序树中,虽然一个节点的孩子之间是有左右次序的,但是若该节点只有一个孩子,就无须区分其左右次序。而在二叉树中,即使是一个孩子也有左右之分。 第2章 算法分析与数据结构 2.5 其他常用数据结构 二叉树具有以下重要性质: 1)二叉树第i层上的节点数目最多为 2i-1(i≥1)。 2)深度为k的二叉树至多有 个2k-1节点(k≥1)。 3)在任意一棵二叉树中,若终端节点的个数为 n0,度为2的节点数为n2 ,则n0 = n2+1。 第2章 算法分析与数据结构 2.5 其他常用数据结构 满二叉树和完全二叉树 满二叉树一棵深度为k且有 2k-1个节点的二叉树称为满二叉树。 满二叉树和完全二叉树是二叉树的两种特殊情形。 满二叉树的特点: 1)每一层上的节点数都达到最大值。 2)满二叉树中不存在度数为1的节点,每个分支节点均有两棵高度相同的子树,且树叶都在最下一层上。 第2章 算法分析与数据结构 2.5 其他常用数据结构 完全二叉树:若一棵二叉树最多只有最下面的两层,其节点的度数可以小于2,并且最下一层上的节点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。 完全二叉树的特点: 1)满二叉树是完全二叉树,完全二叉树不一定是满二叉树。 2)在满二叉树的最下一层上,从最右边开始连续删去若干节点后得到的二叉树仍然是一棵完全二叉树。 3)在完全二叉树中,若某个节点没有左孩子,则它一定没有右孩子,即该节点必是叶节点。 第2章 算法分析与数据结构 2.5 其他常用数据结构 4)具有n个节点的完全二叉树的满二叉树深度为: 1+lgn (满二叉树) 第2章 算法分析与数据结构 2.5 其他常用数据结构 顺序存储结构 该方法是把二叉树的所有节点按照一定的线性次序存储到一片连续的存储单元中。节点在这个序列中的相互位置还能反映出节点之间的逻辑关系。 完全二叉树节点编号方法:在一棵n个节点的完全二叉树中,从树根起,自上层到下层,每层从左至右,给所有节点编号,能得到一个反映整个二叉树结构的线性序列。 第2章 算法分析与数据结构 2.5 其他常用数据结构 编号特点:完全二叉树中除最下面一层外,各层都充满了节点。每一层的节点个数恰好是上一层节点个数的2倍。 假设编号为i的节点是 (1≤i≤n),则有: 1)若i>1,则 ki的双亲编号为i/2;若i=1
文档评论(0)