计算机数据结构入门-第六章 树和森林
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1.3 树的表示形式
➢树形表示法,嵌套集合表示法,凹入目录表示法,广 义表形式的表示法。
6.1.3 树的表示形式
➢树形表示法,嵌套集合表示法,凹入目录表示法,广 义表形式的表示法。
由于树形表示法比较直观,所以在本书中主要采用 树形表示法来表示树形结构。
6.1.4 树的基本操作
6.1.4 树的基本操作
6.1.2 树的术语
8.祖先(ancestor):在树 中,从根结点到结点x所经 的分支上的所有结点称 为结点x的祖先。
如在图(c)所示的树中,结 点M的祖先为:A、D、I。
6.1.2 树的术语
9.子孙(descendant):在 树中,以某结点p为根的子 树中的所有结点都称为 结点p的子孙。
例如在图(c)所示的树 中,D的子孙有H、I、J、 M、N。
6.1.2 树的术语
6.1.2 树的术语
1.结点(node):在树中每一 个数据元素及指向其子树根 的分支称为一个结点。 2.结点的度(degree of node):一个结点的子树数目 (或分支数)称之为该结点的 度。 例如在图(c)所示的树中, 结 点A的度为3,结点C的度数为 1, 结点E的度数为0。
张云有两个孩子张亮和张丽。
元素之间的关系不是一对一的线性关系,而是一对多的关系,称为
树形结构
树的例子还很多,如文件目录树,xml文档树,操作系统中的进程 树等等
例
(根目录)
\
f1 f2 f3 … fn d1 d2 … dm … f11 f12 … f1k d11 d12 … ……
6.1.1 树的定义
6.1.2 树的术语
10.结点的层次(level):在 树中,从根结点开始,根为 第一层,根的孩子为第二层, 依次类推,树中任一结点的 层次是其双亲结点层次数 加1。
例如在图(c)所示的树中, 结点K、L、M、N的层次 数为4。
6.1.2 树的术语
11.树的深度(depth):树中结 点的最大层次称为树的深度 或树的高度(height)。
(9)InsertChild ( x,d )
(10)DeleteChild ( x,i ) (11)DeleteSubTree
(x)
(12)IsEmpty Байду номын сангаас )
(13)Travers( )
6.2 二叉树
6.2 二叉树
简单地说,二叉树就是二次有序树。
【递归】定义:二叉树是由 n(n>=0)个结点组成的有限集合, 它或为空树(n=0),或由一个根结 点和至多两棵被称为根的左子 树和根的右子树的互不相交的 二叉树组成。
数据结构
第六章 树和森林
第五章 树和森林
主要内容
➢树的概念 ➢二叉树定义、性质 ➢二叉树的存储结构 ➢遍历二叉树 ➢线索二叉树 ➢二叉树的应用
6.1 树的概念
从右图可以看出
某家族的血统关系如下:
张宇有四个孩子分别是:张山、 张川、张星和张月;
张山有二个孩子张冰和张雪;
张星有三个孩子张雨、张云和 张风;
6.孩子(child)和双亲(parent): 在树中,结点p的子树的根称为 结点p的孩子;反之,这个结点p 称为其孩子的双亲(父亲)。
如在图(c)所示的树中,结点D 为结点A的子树的根,因此结 点D是结点A的孩子,结点A是 结点D的双亲结点(父结点)。
6.1.2 树的术语
7.兄弟(sibling):在树中,同 一个双亲的孩子之间互称为 兄弟。 例如,在图(c)所示的树中,结 点B、C、D互为兄弟。
树的基本操作:
(1)Root ( )
(2)CreateRoot ( d )
(3)Parent( x )
(4)FirstChild ( x )
(5)NextSibling ( x, y ) 树的基本操作 (6)PreSibling ( x, y ) 的解释参见教
(7)Retrieve ( x )
材。
(8)Assign (x,d)
14.无序树:如果树中结点的 各棵子树的次序是无关的则 称该树为称无序树。
6.1.2 树的术语
15.森林(forest):森林是 m(m>0)棵互不相交的树 组成的集合。对树中每 个结点而言,其子树的集 合即为森林。
如图(c)中以B,C,D为根的 A的子树组成的集合就是 根A的子树森林。
6.1.3 树的表示形式
如在图(c)所示的树中,结点A、 B、C、D、F、I都是树的分 支结点,且结点B、C、D、F、 I是树T的内部结点。
6.1.2 树的术语
5.树的度(degree of tree): 树的结点中,结点的最大的 度称为该树的度。 如图(c)所示的树,其度为3。 有时也称树的度为树的次
6.1.2 树的术语
6.1.2 树的术语
3.终端结点(terminal node):在树中,度为0的结 点称为终端结点或叶子 (leaf)。
如在图(c)所示的树中,结 点E,K,L,G,H,M,N,J都是 树的叶子。
6.1.2 树的术语
4.非终端结点(nonterminal node):在树中,度不为0的结点 称为非终端结点或分支结点。 除根结点之外的分支结点也 称内部结点。
注:二叉树中不存在度大于2的 结点,并且二叉树的子树有左子 树和右子树之分。
因此在画二叉树时左右要画得清清楚楚
显然,二叉树是一种有序树。二叉树中某个 结点即使只有一棵子树也要区分是左子树还是 右子树。因此,如下图所示,(a)和(b)应是两棵不 同的二叉树。
树(tree)T是一个包含 n(n>=0)个数据元素的有限集合。 并且有: (1)当n=0时,T称为空树; (2)如果n>0,则树有且仅有一个
特定的被称为根(root)的结点,树
的根结点只有后继,没有前驱; (3)当n>1时,除根结点以外的其 余结点可分为m(m>0)个互不相 交的非空有限集T1、T2、...、Tm, 其中每一个集合Ti本身又是一棵 非空树,并且称它们为根结点的 子树(subtree)。
例如图(c)所示的树的深度为4。
12.堂兄弟:双亲在同一层的 结点互称为堂兄弟。
如在图(c)所示的树中,结点F、 G、H互称为堂兄弟。
6.1.2 树的术语
13.有序树:如果树中结点p 的各棵子树是有次序的则称 该树为有序树,此时结点p从 左到右的k子树分别称为p的 第1棵子树、第2棵子树、…、 第k棵子树。