- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
全国计算机等级考试二级公共基础之树与二叉树
1.6.1 树的基本概念
树是一种简单的非线性结构。在树这种结构中,所有元素之间的关系具有明显的层次关系。用图形表示树这种数据结构时,就象自然界中的倒长的树,这种结构就用“树”来命名。如图:
在树结构中,每个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称为树的根(如R)。
在树结构中,每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点(如W,Z,A ,L,B,N,O,T,H,X)。
在树结构中,一个结点拥有的后件个数称为结点的度(如R的度为4,KPQDEC结点度均为2)。
树的结点是层次结构,一般按如下原则分层:根结点在第1层;同一个层所有结点的所有子结点都在下一层。树的最大层次称为树的深度。如上图中的树深度为4。R结点有4棵子树,KPQDEC结占各有两棵子树;叶子没有子树。
在计算机中,可以用树结构表示算术运算。在算术运算中,一个运算符可以有若干个运算对象。如取正(+)与取负(-)运算符只有一个运算对象,称为单目运算符;加(+)、减(-)、乘(*)、除(/)、乘幂(**)有两个运算对象,称为双目运算符;三元函数f(x,y,z)为 f函数运算符,有三个运算对象,称为三目运算符。多元函数有多个运算对象称多目运算符。
用树表示算术表达式原则是:
(1)表达式中的每一个运算符在树中对应一个结点,称为运算符结点
(2)运算符的每一个运算对象在树中为该运算结点的子树(在树中的顺序从左到右)
(3)运算对象中的单变量均为叶子结点
根据上面原则,可将表达式:a*(b+c/d)+c*h-g*f表示如下的树。
树在计算机中通常用多重链表表示,多重链表的每个结点描述了树中对应结点的信息,每个结点中的链域 (指针域)个数随树中该结点的度而定。
1.6.2 二叉树及其基本性质
1. 什么是二叉树
二叉树是很有用的非线性结构。它与树结构很相似,树结构的所有术语都可用到二叉树这种结构上。
二叉树具有以下两个特点:
(1)非空两叉树只有一个根结点
(2)每个结点最多有两棵子树,且分别称该结点的左子树与右子树。
也就是说,在二叉树中,每一个结点的度最大为2,而且所有子树也均为二叉树。二叉树中的每一个结点可以有左子树没有右子树,也可以有右子树没有左子树,甚至左右子树都没有。
2. 二叉树的基本性质
二叉树性质有:
性质1:在二叉树的第K层上,最多有2k-1(k=1)个结点
性质2:深度为 m的二叉树最多有2m-1个结点
性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总比度为2的结点多一个
性质4:具有n个结占的二叉树,其深度至少为[log2n]+1, 其中[log2n]表示取log2n的整数部分。
3. 满二叉树与完全二叉树
(1) 满二叉树
满两叉树是除了最后一层外,每一层上的所有结点都有两个子结点。即在满二叉树中,每一层上的结点数都达到最大值。在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m -1个结点。如图:
深度为2的满二叉树
深度为3的满二叉树
深度为4的满二叉树
完全二叉树除最后一层外,每一层上的结点数均达到最大数;最后一层只缺少右边的若干结点。如图
深度为3的完全二叉树
?
深度为4的完全二叉树
完全二叉树具有以下两个性质:
性质5:具有n个结点的完全二叉树的深度为[log2n]+1
性质6:设完全[log2n]+1有n个结点(如右图10个结点,编号如图)。如果从根结点开始,按层序用自然数1,2,…n给结点进行编号,则对于编号为k(k=1,2,…n)的结点有以下结论:
(1)若k=1,则该结点为根结点,它没有父结点;若k1,则该结点的父结点编号为INT(k/2)。如结点D的编号K=4,则它的父结点B的编号为2
(2)若2k=n,则编号为k的结点的左子结点编号为2k,否则该结点无左子结点(也无右子结点),如结点D的编号K=4,则8=10,它的左子结点H编号为8
(3)若2k+1=n,则编号为k的结点的右子结点编号为2k+1,否则该结点无右子结点。如结点D的编号K=4,则9=10,它的右左子结点H编号为9
1.6.3 二叉树的存储结构
在计算机中,二叉树通常采用链式存储结构。与线性链表类似,用于存储二叉树中各元素的存储结点也由两部分组成:数据域与指针域。但在二叉树中,由于每一个元素可以有两个后件(即两个子结点),因此,用于存储二叉树的存储结点的指针域有两个:一个用于指向结点的左子树结构的存储地址,称为左指针域;另一个用于指向右子树结点的存储地址,称为右指
文档评论(0)