2011赛前知识点(树)课程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
树 2011暑期信息学联赛集训 题型 计算:层数、度、节点 遍历:从其中两种推出另一种 延伸:表达式的前缀、后缀 最优前缀编码 、图生成树 认识树结构 兔子繁殖图——象一株倒悬着的树 树结构的特点 树是一种重要的非线性数据结构,很象自然界中的树那样,从树根到大分枝、小分枝、直到叶子把数据联系起来,这种数据结构就叫做树结构,简称树。树是N个结点的有限集合 树中每个分叉点称为结点,起始结点称为根结点,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。结点的前趋结点称为该结点的双亲,结点的后趋结点称为该结点的子女或孩子,同一结点的子女之间互称兄弟。 ①结点的度和树的宽度 一个结点拥有的子树的个数称为是该结点的度 树的所有结点中的最大度为该树的宽度 ②叶结点:度为0的结点称为叶结点或端结点 ③树的深度 在树的结构中,结点的层数从树根开始定义,根结点在第一层,其子结点在第二层,以此类推。树中结点最大的层号为树的深度。 ④有序树和无序树 若结点的子树有次序排列,且先后次序不能互换,这样的树称为有序树,反之为无序树。 ⑤森林 森林是若干棵互不相交的树构成的集合。 2. 二叉树的定义 二叉树是一种重要的树状结构。 二叉树是n n?0 个结点的有限集合,具有两个特点: 如果二叉树非空,则有且只有一个根结点; 每个结点最多有两个子结点,分别以这两个子结点作为根结点组成该结点的左子树和右子树。 二叉树的度最大为2。 二叉树的5种基本形态: 练习题 由3个结点可以构造出多少种不同的二叉树? 满二叉树 满二叉树是指除了最后一层外,每一层的结点都有两个子结点的二叉树。也就是说,在满二叉树的任何一层上,结点的数目都达到最大值。 完全二叉树 若一棵二叉树至多只有最下面的两层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,则此二叉树成为完全二叉树。 二叉树的性质1 性质1 二叉树第i i 1 层的结点总数不超过2i-1; 性质2 深度为k的二叉树的结点总数不超过2k-1 k 1 。 二叉树的性质 性质3 在任意二叉树中,如果其叶结点的个数为N0,其度数为2的结点总数为N2,则有: N0 N2+1 证明 设树的结点总数为n,度为0、1、2的结点个数为n0、n1、n2,树的边个数为b n n0+n1+n2 b n-1 b 2n2+n1 所以有 n-1 2n2+n1 n 2n2+n1+1 n0+n1+n2 2n2+n1+1 n0 n2+1 4、设有一棵k叉树,其中只有度为0和k两种结点,设n 0 ,n k ,分别表示度为0和度为k的结点个数,试求出n 0 和n k之间的关系(n 0 数学表达式,数学表达式仅含n k 、k和数字)。 例题 1、高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。 在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为( )。 A.10 B. 11 C. 12 D. 13 E. 210 – 1 2、设某种二叉树有如下特点:结点的子树数目不是2个,则是0个。这样的一棵二叉树中有m m 0 个子树为0的结点时,该二叉树上的结点总数为 ____。  A.2m+l   B.2m-1 C.2 m-1   D.2 m+1 二叉树的性质 对于完全二叉树,结点的位置与结点编号的关系: 如果i 1,则i为根,无父结点; 如果i 1,则父结点为[i/2]。 如果2*i N,则i的左儿子的编号为2*i。 如果2*i+1 N,则i的右儿子的编号为2*i+1。 二叉树的遍历 树的遍历就是寻找一条路径,依次访问树中的所有结点,且每个结点只访问一次。树的遍历实质上是将树的各个结点转换成一个线性序列。 根据根结点,左子树,右子树先后访问的不同顺序,可以有以下三种不同的遍历方式: ①根,左,右(先序遍历) ②左,根,右(中序遍历) ③左,右,根(后序遍历) 先序遍历(先根遍历) 访问根结点 ?先序遍历左子树?先序遍历右子树 访问根结点A; 先序遍历A的左子树(D、E、H、I); (1)访问根结点B; (2)先序遍历B的左子树(D、H、I); 中序遍历(中根遍历) 中序遍历左子树?访问根结点?中序遍历右子树 中序遍历A的左子树; 中序遍历B的左子树 中序遍历D的左子树 访问结点H 访问结点D 访问结点I 访问结点B 访问结点E 访问根结点A; 中序遍历A的右子树。 后序遍历(后根遍历) 后序遍历左子树?后序遍历右子树?访问根结点 后序遍历A的左子树; 后序遍历B的左子树 后序遍历D的左子树 访问结点H 后序遍历D的右子树 访问结点I 访问结点D 后序遍历B的右子树 访问结点E 访问结点B

文档评论(0)

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

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

1亿VIP精品文档

相关文档