国防《数据结构》(C语言描述)教学资料包 教学课件 第5章.ppt

国防《数据结构》(C语言描述)教学资料包 教学课件 第5章.ppt

本章概述 在前面的章节中介绍了数据结构中的线性结构,其逻辑结构的特点是数据元素之间存在一对一的关系。而生活中的许多事物之间关系并非如此简单,如家族成员之间的关系,一个单位的组成结构等。这些结构的共同特点是具有明显的层次特点,并且其中的每个元素最多只有一个前驱,但可以有多个后继,因而可以抽象为本章所要学习的树形结构。树在计算机领域中也有着广泛的应用,例如,在编译程序中,用树来表示源程序的语法结构;在数据库系统中,用树来组织信息。 5.1 树的基本概念 树(tree)是n(n≥0)个有限数据元素的集合,当集合为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的结点称之为根(root)。 (2)其余的结点可分为m(m≥0)个互不相交的子集T1,T2,…,Tm,其中每个子集又是一棵树,并称为根 的子树(subtree)。每棵子树的根结点有且仅有一个 直接前驱,但可以有零个或多个直接后继。 树的定义是一个递归的定义。 下图是树的示例,其中图(a)是一棵空树;图(b)是一棵只有根结点的树;图(c)是一棵具有11个结点的树,即T={A,B,C,D,E,F,G,H,I,J,K},结点A为树T的根结点,除根结点A之外的其余结点分为3个不相交的集合:T1={B,E,F},T2={C},T3={D,G,H,I,J,K},它们构成了结点A的3棵子树,T1、T2、T3本身也分别是一棵树。 从树的定义和示例可以看出,树的逻辑结构具有下面的特点: (1)树中结点,只有根结点没有前驱。 (2)除根结点外,其余结点都有且仅有一个前驱。 (3)树的结点,可以有零个或多个后继。 (4)除根结点以外的其他结点,都存在唯一一条从根结点到该结点的路径。 (5)树是一种分支结构。 由此特点可知,下图所示的不是树结构。 树可以表示具有分支结构关系的对象。例如,家族族谱和单位行政机构的组织关系等。 树也是常用的数据组织形式。 有些应用中数据元素之间并不存在分支结构关系,但是为了便于管理和使用数据,将它们用树的形式来组织。例如,在计算机的文件系统中,不论是DOS文件系统还是Windows文件系统,所有的文件都是用树的形式来组织的,如下图所示。 结点:是指树中的一个数据元素,一般用一个字母表 示。 结点的度:一个结点包含子树的数目。 树的度:树中结点度的最大值。 叶子:度为0的结点称为叶子结点或树叶,也叫终端结 点。 分支结点:度不为0的结点称为分支结点,也叫非终端结 点。 孩子结点:树中一个结点的子树的根结点称为这个结点 的孩子结点,也称为孩子、儿子、子女等。 双亲结点:若树中的某个结点有孩子结点,则这个 结点就称为它的孩子结点的双亲结点。 祖先结点:从根结点到该结点所经过分支上的所有 结点为该结点的祖先结点。 子孙结点:某一结点的孩子及孩子的孩子都为该结 点的子孙结点。 兄弟结点:具有同一个双亲的结点,称为兄弟结 点。 层数:根结点的层数为1,其他结点的层数为从根结 点到该结点所经过的分支数目再加1。 树的高度(深度):树中结点所处的最大层数称为 树的高度。 有序树:若一棵树中所有子树从左到右的排序是有顺 序的,不能颠倒次序,称该树为有序树。 无序树:若一棵树中所有子树的次序无关紧要,则称 为无序树。 森林:m(m≥0)棵互不相交的树组成的集合称为森 林。从定义可知,一棵树由根结点和m棵子树组成,若把树 中的根结点删除,则树就变成了包含m棵子树的森林。 5.2 二叉树 二叉树(binary tree):由结点的有限集合构成,这个集合或为空集,或由一个根结点及两棵不相交的分别称为这个根结点的左子树和右子树的树构成,并且左、右子树本身也是二叉树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称为一个结点。 二叉树有以下几个特点: (1)二叉树中每个结点最多有两棵子树,二叉树每个结点的度小于等于2。 (2)二叉树是有序的,其左、右子树不能颠倒,否则就成为另一棵不同的二叉树,即使只有一个结点也要区分它是左子树还是右子树。 (3)二叉树是递归结构,在二叉树的定义中又用到了二叉树的概念。 二叉树具有5种基本形态,如下图所示。 二叉树、树及有序树是有区别的,二叉树不是树的特例,主要差别在于二叉树的子树有左右之分。 在有序树中,虽然一个结点的孩子之间是有左右次序的,但若该结点只有一个孩子时,就无须区分其左右次序。 而在二叉树中,即使是一个孩子

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档