- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二部分 树和二叉树 一、 树的定义和基本概念 1 树的存储结构 二、 二叉树 1 二叉树的定义和基本术语 2 二叉树的性质 3 二叉树的存储结构 三、 遍历二叉树 1 遍历二叉树 2 线索二叉树 四、 二叉排序树和平衡二叉排序树 1 二叉排序树 2 平衡二叉排序树 五、 树和森林 1 森林与二叉树的转换 六、 树和二叉树的应用 1 Huffman 树 2 树的应用 二、 树的描述方法 1、形式化表示法 树是一种数据结构 T=(D, R) 其中:D是树中结点的集合,R是树中结点关系的集合。 当D={}时,即树中结点为空,则称T为空树;否则,设树T中有m棵子树:D={root}∪Df; 其中:root为树的树根结点; Df = D1∪D2∪…∪ Dm∧Di∩Dj=∮∧(i≠j,1≤i,j≤m) 当树中结点个数n≤1时,则R={},否则有: R={root,Ri,i =1,2,… m,Ri是根结点root的子树Ti的根结点} 2、树形表示法 该方法是借助于自然界中树的形态,用一棵倒置的树来表示,非常直观、 形象,人们易于接受和采用。 3、凹入表示法 如图(a)所示,该方法类似于书的编目,常用于树结构的打印和显示。 4、文氏表示法 利用集合和集合的包含关系来描述树结构。如图(b)所示。 5、广义表表示法 利用广义表来描述树结构。如图(c)所示。 三、树的基本操作 1、建立一棵空树:InitialTree(T) 初始条件:无; 操作结果:构造一棵空树T。 2、? 求树T的树根结点:RootTree(T) 初始条件:树T已经存在; 操作结果:返回树T的根。 3、? 求树T中结点p的双亲:ParentTree(T,p) 初始条件:树T已经存在,且p是树T中的一个结点; 操作结果:若p不是树T的根结点,则返回结点p的双亲结点;否则,返回NULL、 4、求树T中结点p的最左边的孩子结点:LeftChildTree(T,p) 初始条件:树T已经存在,且p是树T中的一个结点; 操作结果:若p不是树T的叶子结点,则返回结点p的最左边孩子结点;否则,返回NULL。 5、? 求树T中结点p的最右边的孩子结点:RightChildTree(T,p) 初始条件:树T已经存在,且p是树T中的一个结点; 操作结果:若p不是树T的叶子结点,则返回结点p的最右边孩子结点;否则,返回 NULL。 6、? 判断树T是否为空:EmptyTree(T) 初始条件:树T已经存在; 操作结果:若树T为空,则返回True;否则,返回False。 7、求树T的深度:DepthTree(T) 初始条件:树T已经存在; 操作结果:返回树T的深度。 8、 将结点p作为树T中结点q的第i棵子树插入:InsertTree(T,p,q,i) 初始条件:树T已经存在,q是树T中的结点,且1≤i≤q所指结点的度+1; 操作结果:将结点p作为树T中结点q的第i棵子树插入。 9、 在树T中删除结点p的第i棵子树:DeleteTree(T,p,i) 初始条件:树T已经存在,p是树T中的结点,且1≤i≤p所指结点的度; 操作结果:在树T中删除结点p的第i棵子树。 10、按某种方式遍历树T: TraverseTree(T) 初始条件:树T已经存在; 操作结果:按某种方式遍历树T,返回遍历序列。 11、? 给树T中结点p赋值:AssignNodeTree(T,p,x) 初始条件:树T已经存在,且p是树T中的结点; 操作结果:将x赋值给树T中的结点p。 四、 树的存储结构 由于树是一种非线性数据结构,在树中除了叶子结点以外,其余结点都有一个或多个后继结点,所以不可能简单地用一个一维数组或一个单链表来存储一棵树。这样,在计算机中要存储一棵树,不但要把各结点本身的信息存储起来,而且还必须把树中各结点之间的关系反映在存储结构中。以下我们讨论树常用的几种基本存储方法。 1、孩子表示法存储结构 由于树中的每一个结点包含0个或多个孩子结点,所以,可以对树中每一个结点用包含一个结点信息域和多个指向该结点孩子的指针域的结构来表示,通过各指针域来反映树中结点与结点之间的关系,其结点结构如下图所示。 下图所示的是采用孩子表示法的存储结构示意图。
文档评论(0)