计算机软件技术基础课件009.pptVIP

  • 1
  • 0
  • 约2.95万字
  • 约 145页
  • 2019-05-19 发布于江苏
  • 举报
第六章 树和二叉树 本章中主要介绍下列内容: 树的逻辑定义和存储结构 二叉树的逻辑定义、存储结构 二叉树的基本操作算法 树和二叉树的转换 哈夫曼树及其应用 [本章学习要求] 掌握:树和二叉树的性质,有关术语及基本概念。 掌握:二叉树的两种存储方法,重点是链式存储。 掌握:各种次序的遍历算法,能灵活运用遍历算法实现二叉树的各种运算。 掌握:几种建立二叉树的方法。 了解:二叉树的线索化及其实质,了解在各种线索树中查找给定结点的前趋和后继的方法。 了解:树、森林与二叉树之间的转换方法。 了解:树的各种存储结构及其特点;树和森林的二种次序的遍历。 掌握:哈夫曼树的基本概念,最优二叉树和哈夫曼编码方法。 6.1 树基本概念 6.2 二叉树的基本操作与存储实现 6.3 二叉树的遍历 6.4 线索二叉树 6.5 二叉树的应用 6.6 树的定义与相关术语 6.7 树的基本操作与存储 6.8 树、森林与二叉树的转换 6.9 树和森林的遍历 6.1 树的基本概念 1.树的定义 树是一种常非线性结构树是n(n≥0)个结点的有限集合。若n=0,则称为空树;否则,有且仅有一个特定的结点被称为根,当n1时,其余结点被分成m(m0)个互不相交的子集T1,T2,...,Tm,每个子集又是一棵树。 2.树的特点 (1)树的根结点没有前驱结点,除根结点之外的所有结点有且只有一个前驱结点 (2)树中所有结点可以有零个或多个后继结点 树结构和非树结构的示意 图 4. 基本术语 结点(node)——表示树中的元素,包括数据项及若干指向其子树的分支 结点的度(degree)——结点拥有的子树数 叶子(leaf)——度为0的结点,也叫终端结点 分支结点——度0的结点,也叫非终端结点 结点的层次(level)——从根结点算起,根为第一层,它的孩子为第二层…… 树的度——一棵树中最大的结点度数 树的深度(depth)——树中结点的最大层次 有序树、无序树—— 如果树中每棵子树从左向右的排列拥有一定的顺序,不得互换,则称为有序树,否则称为无序树。 森林 —— 是m(m≥0)棵互不相交的树的集合。 在树结构中,结点之间的关系又可以用家族关系描述,定义如下: 孩子(child)——结点子树的根称为该结点的孩子 双亲(parents)——孩子结点的上层结点 兄弟(sibling)——同一双亲的孩子 祖先、子孙——如果有一条路径从结点M到结点N,那么M就称为N的祖先,N成为M的子孙 堂兄弟 ——双亲在同一层的结点互为堂兄弟。 5. 树的基本运算 常用操作: (1) 构造一个树 CreateTree (T) (2)清空以T为根的树 ClearTree(T) (3)判断树是否为空 TreeEmpty(T) (4)获取给定结点的第i个孩子 Child(T,node,i) (6)获取给定结点的双亲 Parent(T,node) (6)遍历树Traverse(T) 对树遍历的主要目的是将非线性结构通过遍历过程线性化,即获得一个线性序列。树的遍历顺序有两种,一种是先序遍历,即先访问根结点,然后再依次用同样的方法访问每棵子树;另一种是后序遍历,即先依后序遍历方法依次访问每棵子树,最后访问根结点。 6.2 二叉树 6.2.1 二叉树的定义 1.定义 二叉树是n(n≥0)个结点的有限集合。当n=0时,称为空二叉树;当n0时,有且仅有一个结点为二叉树的根,其余结点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树。 二叉树是另一种树形结构。它与树形结构的区别是: (1)每个结点最多有两棵子树; (2)子树有左右之分。 二叉树结构的图形表示示例 2.二叉树的5种形态: 3. 二叉树的基本运算 (1) 构造一棵二叉树 CreateBTree ( BT) (2)清空以BT为根的二叉树 ClearBTree(BT) (3)判断二叉树是否为空 BTreeEmpty(BT) (4)获取给定结点的左孩子和右孩子 LeftChild(BT,node),RightChild(BT,node) (5)给定结点的左孩子和右孩子 LeftChild(BT,node),RightChild(BT,node) (5)获取给定结点的双亲 Parent(

文档评论(0)

1亿VIP精品文档

相关文档