chap7树和二叉树.pptVIP

  • 5
  • 0
  • 约8.89千字
  • 约 91页
  • 2018-05-18 发布于四川
  • 举报
问题的提出 第7章 树和二叉树 本章导读: 7.1 树的基本概念 树:n(n≥0)个结点的有限集合。当n=0时,称为空树; 树的定义如下: T={D,R}。D是包含n个结点的有穷集合(n0),关系R满足以下条件: (1) 有且仅有一个结点k0∈D,它对于关系R来说没有前驱结点,结点k0称作树的根。 (2) 除根结点k0外,D中的每个结点对于关系R来说都有且仅有一个前驱结点。 (3) D中每个结点对于关系R来说可以有多个后继结点。 例:有一棵树T={D,R},其中 D={A,B,C,D,E,F,G,H} R={r} r={A,B,A,C,A,D,C,E,C,F,D,G,E,H} 给出其逻辑结构图。 7.1.3 树的基本术语 结点的度:结点所拥有的子树的个数。 推导:树中结点数等于所有结点度数加1 树的度:树中各结点度的最大值。 分支结点:度不为0的结点,也称为非终端结点。 叶子结点:度为0的结点,也称为终端结点。 孩子、双亲:树中某结点的后继称为这个结点的孩子结点,这个结点称为它孩子结点的双亲结点; 兄弟:具有同一个双亲的孩子结点互称为兄弟。 祖先、子孙:在树中,如果有一条路径从结点x到结点y,那么x就称为y的祖先,而y称为x的子孙。 路径:如果树的结点序列n1, n2, …, nk有如下关系:结点ni是ni+1的双亲(1=ik),则把n1, n2, …, nk称为一条由n1至nk的路径;路径上经过的边的个数称为路径长度。 结点所在层数:根结点的层数为1;对其余任何结点,若某结点在第i层,则其孩子结点在第i+1层。 树的深度:树中所有结点的最大层数,也称高度。 有序树、无序树:如果一棵树中结点的各子树从左到右是有次序的,称这棵树为有序树;反之,称为无序树。 数据结构中讨论的一般都是有序树 森林:m (m≥0)棵互不相交的树的集合。森林的概念与树的概念十分相近,因为只要把树的根结点删去就成了森林。反之,只要给n棵独立的树加上一个结点,并把这n棵树作为该结点的子树,则森林就变成了树。 树结构和线性结构的比较 例:有一棵树的括号表示为A(B,C(E,F(G)),D),问: 1、此树的根结点 2、叶子结点有哪些 3、结点C的度,孩子结点、双亲结点 4、这棵树的度 5、这棵树的深度 例:有一棵度为4的树中度为1、2、3、4的结点数分别为4、3、2、2,则该树的叶子结点的个数是多少?总结点个数是多少? 7.1.4 树的存储结构 1.双亲存储结构 用一个一维数组存储树中的各个结点,数组元素是一个记录,包含data和parent两个字段,分别表示结点的数据值和其双亲在数组中的下标。 树的双亲存储结构 2.孩子链表存储结构 把每个结点的孩子结点排列起来构成的单链表称为孩子链表。通常,每个孩子链表的表头指针放在一个顺序表中。该顺序表中每个元素有两个字段,分别存放结点数值和第一个孩子的地址。孩子链表中的每个结点也有两个字段:一个指示孩子结点的数值存放在顺序表中的位置;另一个存放下一个孩子的地址。 3.孩子兄弟链表存储结构 孩子兄弟链表存储结构是一种二叉链表,链表中每个结点包含两个指针,分别指向对应结点的第一个孩子和下一个兄弟。 7.2 二叉树 研究二叉树的意义? 二叉树的结构相对简单,其运算也自然简单,便于初学者入门。 由于多叉树可以借助一定的规则转换为二叉树,因此二叉树结构在应用中具有非常重要的地位。 二叉树的定义 二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 二叉树的特点 每个结点的度只可能是0,1,2; 二叉树是有序树,即使某结点只有一棵子树,也要区分该子树是左子树还是右子树。 二叉树的5种基本形态 特殊的二叉树 斜树 1 .所有结点都只有左子树的二叉树称为左斜树; 2 .所有结点都只有右子树的二叉树称为右斜树; 3.左斜树和右斜树统称为斜树。 满二叉树 在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。可以对满二叉树的结点进行连续编号,约定编号从树根为1开始,按照层数从小到大、同一层从左到右的次序进行。图中每个结点外边的数字为对该结点的编号。 满二叉树的特点: 叶子只能出现在最下一层; 只有度为0和度为2的结点。 完全二叉树 若二叉树中最多只有最下面两层的结点的度数可以小于2,并且最下面一层的叶结点 都依次排列在该层最左边的位置上。对一棵具有n个结点的二叉树按层序编号,如果编号为i(1≤i≤n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同。 完全二叉树的特点 1

文档评论(0)

1亿VIP精品文档

相关文档