- 1、本文档共159页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 树与森林 树形结构是一种非线性结构。所谓非线性结构是指,在该结构中至少存在一个数据元素,有两个或两个以上的直接前驱(或直接后继)元素。 6.1 树和森林的概念 6.1.1 树的定义 树是由 n (n ≥ 0) 个结点组成的有限集合。如果 n = 0,称为空树;如果 n 0,则 1.有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱; 2.除根以外的其他结点划分为 m (m ≥ 0) 个 互不相交的有限集合T0, T1, …, Tm-1,每个集合又是一棵树,并且称之为根的子树,每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个直接后继。 6.1.2 树的术语 (1)结点。它包含数据项及指向其它结点的分支。为方便起见,每个数据项用单个字母表示。 (2)结点的度。结点所拥有的子树的个数称为该结点的度。 (3)叶结点。度为0的结点称为叶结点,或者称为终端结点。 (4)分枝结点。度不为0的结点称为分支结点,或者称为非终端结点。一棵树的结点除叶结点外,其余的都是分支结点。 (5)左孩子、右孩子、双亲。树中一个结点的子树的根结点称为这个结点的孩子。这个结点称为它孩子结点的双亲。具有同一个双亲的孩子结点互称为兄弟。 (6)路径、路径长度。如果一棵树的一串结点n1,n2,…,nk有如下关系:结点ni是ni+1的父结点(1≤ik),就把n1,n2,…,nk称为一条由n1至nk的路径。这条路径的长度是k-1。 (7)祖先、子孙。在树中,如果有一条路径从结点B到结点I,那么B就称为I的祖先,而I称为B的子孙。 (8)结点的层数。规定树的根结点的层数为1,其余结点的层数等于它的双亲结点的层数加1。 (9)树的高度。树中所有结点的最大层数称为树的高度。 (10)树的度。树中各结点度的最大值称为该树的度。 (11) 有序树。 树中结点的各棵子树T0,T1,…是有次序的,即为有序树。其中T0叫做根的第1棵子树,T1叫做根的第2棵子树,… (12) 无序树。树中结点的各棵子树之间的次序是不重要的,可以互相交换位置。 (13) 森林。是m(m > 0)棵树的集合。 删去一棵非空树的根结点,树就变成森林;反之,若增加一个根结点,让森林中每一棵树的根结点都变成它的子女,森林就成为一棵树。 6.2 二叉树 6.2.1 二叉树的定义 二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。在二叉树中,每个元素也称作一个结点。 二叉树是有序的,即若将其左、右子树颠倒,就成为另一棵不同的二叉树。即使树中结点只有一棵子树,也要区分它是左子树还是右子树。因此二叉树具有五种基本形态 一、 二叉树的顺序存储表示 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。一般是按照二叉树结点从上至下、从左到右的顺序存储。这样结点在存储位置上的前驱后继关系并不一定就是它们在逻辑上的邻接关系,然而只有通过一些方法确定某结点在逻辑上的前驱结点和后继结点,这种存储才有意义。 对于一般的二叉树,如果仍按从上至下和从左到右的顺序将树中的结点顺序存储在一维数组中,则数组元素下标之间的关系不能够反映二叉树中结点之间的逻辑关系,只有增添一些并不存在的空结点,使之成为一棵完全二叉树的形式,然后再用一维数组顺序存储。 1. 二叉链表 链表中每个结点由三个域组成,除了数据域外,还有两个指针域,分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。 二叉链表可以用无头结点的方式存放,也可以带头结点的方式存放,如图6.7所示。 2.三叉链表 每个结点由四个域组成, data、leftchild以及rightchild三个域的意义同二叉链表结构;parent域为指向该结点双亲结点的指针。这种存储结构既便于查找孩子结点,又便于查找双亲结点 尽管在二叉链表中无法由结点直接找到其双亲,但由于二叉链表结构灵活,操作方便,对于一般情况的二叉树,甚至比顺序存储结构还节省空间。因此,二叉链表是最常用的二叉树存储方式。 二叉树遍历 树的遍历就是按某种次序访问树中的结点,要求每个结点访问一次且仅访问一次。 设访问根结点记作 V, 遍历根的左子树记作 L, 遍历根的右子树记作 R, 则可能的遍历次序有 前序 VLR 镜像 VRL
您可能关注的文档
- 沈阳工业大学文法学院行政法与行政诉讼法学课件 第一章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十八章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十二章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十九章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十六章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十七章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十三章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十四章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十五章.ppt
- 沈阳工业大学文法学院经济法学(二)课件 第二十一章.ppt
最近下载
- SFET-77-47100-C-动车组检修ESCO联轴节检修作业指导书-—— 上海动车段三级修.pdf VIP
- 一种依托咪酯的合成方法.pdf VIP
- 胸痛中心创建现场核查各环节重点及迎检技巧.pdf VIP
- 药理学(西安交通大学)中国大学MOOC 慕课 章节测验期末考试答案.docx
- 中华人民共和国国家标准(大米)GB1354-.pdf
- 2010-2023历年广东省深圳市中考英语试卷(解析版).docx VIP
- 毒麻药品管理相关知识.ppt
- 海顿钢琴奏鸣曲中的装饰音探究.pdf
- 基于STM32的电子密码锁系统设计.docx VIP
- 华中农业大学2022-2023学年《细胞生物学》期末考试试卷(B卷)附参考答案.docx
文档评论(0)