2010ACM程序设计竞赛培训2.pptVIP

  • 1
  • 0
  • 约1.66万字
  • 约 110页
  • 2018-05-15 发布于四川
  • 举报
2010春程序设计培训(二) 2.1 树的定义和基本术语 树型结构是一类重要的非线性结构,直观看来,树是以分支关系定义的层次结构,它非常类似于自然界中的树。 这里我们介绍三种树型结构: 树 二叉树 森林 2.1 树的定义和基本术语 定义: 树(Tree)是n(n=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)其余的结点可分为m(m=0)个互不相交的子集T1,T2,T3…Tm,其中每个子集又是一棵树,并称其为子树(Subtree)。 2.1 树的定义和基本术语 树的图示: 2.1 树的定义和基本术语 树的其他3种表示: 2.1 树的定义和基本术语 树的基本术语: 结点: 结点的度: 叶子结点(终端结点): 分支结点(非终端结点): 树的度: (从根到结点的)路径: 孩子结点、双亲结点: 兄弟结点、堂兄弟: 子孙结点: 结点的层次:树的深度: 2.1 树的定义和基本术语 树的基本术语: 有向树: (1) 有确定的根; (2) 树根和子树根之间为有向关系。 有序树: 子树之间存在确定的次序关系。 无序树:子树之间不存在确定的次序关系。 森林:是m(m≥0 )棵树的集合。 2.1 树的定义和基本术语 对比树型结构和线性结构的结构特点 2.2 二叉树——1.定义 二叉树(Binary Tree)是另一种树型结构,在树结构的应用中起着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树相互转换,这样就解决了树的存储结构及其运算中存在的复杂性。 2.2 二叉树——1.定义 6.2.1 二叉树的定义 定义:二叉树是由n(n=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。 这也是一个递归定义。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。 2.2 二叉树——1.定义 二叉树结点的子树要区分左子树和右子树,即使只有一棵子树也要进行区分,说明它是左子树,还是右子树。这是二叉树与树的最主要的差别。图6.8列出二叉树的5种基本形态,图6.8(C) 和图6.8(d)是不同的两棵二叉树。 2.2 二叉树——2.二叉树的性质(1) 二叉树具有下列重要性质: 性质1: 在二叉树的第i层上至多有2i-1个结点(i=1)。 性质2:深度为k的二叉树至多有2k-1个结点(k=1)。 性质3: 对任何一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。 性质4:具有n个结点的完全二叉树的深度为 +1。 性质5: 如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到第[log2n]+1层,每层从左到右),则对任一结点i,其双亲结点和左右孩子结点的编号都可以通过计算得知。 2.2 二叉树——2.二叉树的性质(1) 二叉树具有下列重要性质: 性质1: 在二叉树的第i层上至多有2i-1个结点(i=1)。 采用归纳法证明此性质。 当i=1时,只有一个根结点,2i-1=20 =1,命题成立。 现在假定对于所有的j,1=ji,命题成立,即第j层上至多有2j-1个结点,那么可以证明j=i时命题也成立。由归纳假设可知,第i-1层上至多有2i-2个结点。 由于二叉树每个结点的度最大为2,故在第i层上最大结点数为第i-1层上最大结点数的二倍, 即2×2i-2=2i-1。 命题得到证明。 2.2 二叉树——2.二叉树的性质(2) 二叉树具有下列重要性质: 性质2:深度为k的二叉树至多有2k-1个结点(k=1). 深度为k的二叉树的最大的结点时为二叉树中每层上的最大结点数之和,由性质1得到每层上的最大结点数: ∑kI=1(第i层上的最大结点数)= ∑kI=12i-1=2k –1 2.2 二叉树——2.二叉树的性质(3) 二叉树具有下列重要性质: 性质3: 对任何一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。 设二叉树中度为1的结点数为n1,二叉树中总结点数为N,因为二叉树中所有结点均小于或等于2, 所以有:N=n0+n1+n2 (6-1) 再看二叉树中的分支数,除根结点外,其余结点都有一个进入分支,设B为二叉树中的分支总数,则有:N=B+1。 由于这些分支都是由度为1和2的结点射出的,所以有: B=n1+2*n2 N=B+1=n1+2×n2+1 (6-2) 由式(6-1)和(6-2)得到: n0+n1+n2=n1+2*n2+1 n0=n2+1 2

文档评论(0)

1亿VIP精品文档

相关文档