第6章 树

树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、........、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree),如图6-2-1所示

结点分类:

树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。如图6-2-4所示,因为这棵树结点的度的最大值是结点D的度,为3,所以树的度也为3。

 

结点间的关系:

结点的子树的根称为该结点的孩子(Child),相应地,该结点称为孩子的双亲(Parent)。同一个双亲的孩子之间互称兄弟(Sibling)。结点的祖先是从根到该结点所经分支上的所有结点。所以对于H点来说,D、B、A都是它的祖先。反之,以某结点为根的子树中的任一结点都称为该结点的子孙。B的子孙有D、G、H、I,如图6-2-5所示。

 

 

树的其他相关概念:

结点的层次(Level)从根开始定义起,根为第一层,根的孩子为第二层。若某结点在第I层,则其子树的根就在第I+1层。其双亲在同一层的结点互为堂兄弟。显然图6-2-6中的D、E、F是堂兄弟,而G、H、I、J也是。树中结点的最大层次称为树的深度(Depth)或高度。当前树的深度为4。

 

如果将树中结点的各子树看成从左至右是有次序的,不能互换的,则称为该树为有序树,否则称为无序树。

森林(Forest)是m(m>=0)颗互不相交的树的集合。

线性表与树的结构的异同:

 

数的抽象数据类型:

 

树的存储结构表示:双亲表示法、孩子表示法、孩子兄弟表示法。

# 双亲表示法:在每个结点中,附设一个指示器指示其双亲结点到链表中的位置。

存储结构的设计是一个非常灵活的过程。一个存储结构设计得是否合理,取决于基于该存储结构的运算是否适合、是否方便,时间复杂度好不好等。

# 孩子表示法:每个结点有多个指针域,其中每个指针指向一颗子树的根结点,我们把这种方法叫做多重链表表示法。

 把每个结点的孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空。然后n个头指针又组成一个线性表,采用顺序存储结构,存放进一个一维数组中。

 

# 双亲孩子表示法

 # 孩子兄弟表示法:任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟。

时间: 2024-10-08 20:46:13

第6章 树的相关文章

离散数学--第7章 树及其应用

第7章 树及其应用7.1 无向树7.2 根树及其应用 • 7.1.1 无向树的定义及其性质• 7.1.2 生成树与基本回路和基本割集• 7.1.3 最小生成树 无向树的定义无向树: 连通无回路的无向图平凡树: 平凡图森林: 每个连通分支都是树的非连通的无向图树叶: 树中度数为1的顶点分支点: 树中度数>=2的顶点 7.2 根树及其应用• 7.2.1 根树及其分类• 7.2.2 最优树与哈夫曼算法• 7.2.3 最佳前缀码• 7.2.4 根树的周游及其应用– 中序行遍法.前序行遍法和后序行遍法–

《数据结构与算法分析:C语言描述》复习——第四章“树”——AVL树

2014.06.15 16:22 简介: AVL树是一种高度平衡的二叉搜索树,其命名源自于联合发明算法的三位科学家的名字的首字母.此处“平衡”的定义是:任意节点的左右子树的高度相差不超过1.有了这个平衡的性质,使得AVL树的高度H总是接近log(N),因此各种增删改查的操作的复杂度能够保证在对数级别.没有bad case是AVL树与普通的二叉搜索树的最大区别.为了实现平衡性质,我们需要记录每个节点的高度(或者平衡因子)来检测不平衡的情况.为了修正高度不平衡,需要用到“旋转”的方法,分为单旋转和双

第五章 树和二叉树

上章回顾 单链表的基本操作,包括插入.删除以及查找 双向链表和循环链表的区别 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第五章 第五章 树和二叉树 树和二叉树 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 预习检查 什么是二叉树 树的遍历有哪几种方式 树有哪些应用 [email pr

【数据结构】第6章 树(下)

数据结构第6章 树(下) §6.4 树和森林 6.4.1 树的储存结构 ①父亲表示法(利用每个(除根)结点只有唯一的父亲的性质) ②孩子表示法(用广义表实现) ③孩子兄弟表示法(二叉链表指向第一个孩子结点和下一个兄弟结点) 6.4.2森林与二叉树的转换 二叉树和树都可以用二叉链作为储存结构(分别是孩子表示法和孩子兄弟表示法),给定一棵树,可以找到唯一的一棵二叉树与之对应.两者的物理结构是相同的,只是解释不同而已(旋转). 任何一棵和树对应的二叉树,其右子树必空(因为根是没有兄弟的),在森林中可以

【数据结构】第6章 树(上)

第一次用markdown-..好高端的赶脚 数据结构第6章 树(上) §6.1 树的定义和基本术语 树是n(n>=0)个结点的有限集 在非空树中有且仅有一个特定的根(root) 树的结构定义是一个递归的定义,即在树的定义中又用到了树的概念,有嵌套集合表示法,广义表表示法和凹入表示法等. 术语: 结点,结点的度(子树个数),叶(度为0),树的度(最大结点度),孩子,父亲,兄弟,祖先(上溯所有结点),子孙(下溯所有结点),层次,堂兄弟,树的深度(最大层次),有序树(左右子树有顺序,如二叉树),无序树

第5章 树与二叉树学习小结

前几章学习的基本都是线性的数据结构,就有顺序存储结构和链式存储结构,而这一章“树”结构是一类非线性数据结构,跟之前就有不同的点,但是,树的存储结构还是可以通过找到元素之间逻辑关系,采用类似线性表的方式,按照结点之间的逻辑关系放到线性存储中. 这部分主要学习到二叉树的内容,二叉树有好几个性质,我想这些性质很重要,有时候在解决问题,它能够帮助理解这棵树比较抽象的结构层次,这是我在理解代码时候体会到的.二叉树存储结构跟遍历有很大的关系,遍历的结果是将非线性结构的树中结点排成一个线性序列. 这是二叉链表

数据结构学习之第7章 树和二叉树

数据结构学习之第7章 树和二叉树 0x7.1.1 树的基本概念 ?1.树的定义 ? 树是由n(n>=0)个结点(或元素)组成的有限集合(记为T) ? 如果n>0,这n个结点中有且仅有一个结点作为树的根结点,简称为根,其余结点可分为m(m>=0)个互不相交的有限集\[T_{1}T_{2}\cdots T_{m}\],其中每个子集又是一棵符合定义的子树,称为根结点的子树. 知识点:由树的定义我们可以看出来树的结构是递归的 ?2.树的逻辑表示法 ? 1.树形表示法 ? 2.文氏图表示法 ? 3

第4章树与森林

到目前为止,数据结构与算法的逻辑结构中,线性结构分别于 第1章线性表,第2章受限的线性表以及第3章线性表的推广中做了扼要介绍.从本章开始进入数据结构与算法的非线性结构部分,这里先巩固下逻辑结构的分类,如下图所示: 一.树 1.1定义 树是N(N≥0)个结点的有限结构.N=0时,称为空树.这是一种特殊情况.在任意一个非空树中应满足: 有且仅有一个特定的称为根的结点: 当(N>1)时,其余结点可分为m(m>0)个互不相交的有限结合{T1,T2,...,Tm},其中每一个结合本身又是一棵树,并且称为

第五章 树与二叉树总结

树结构是一类重要的非线性数据结构 1.树的定义:树(Tree)是n(n>=0)个结点的有限集,它或为空树(n=0):或为非空树: 对于非空树: (1)有且仅有一个称之为根的结点: (2)除根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每个集合本身又是一颗树,并且称为根的子树(SubTree): 2.树的基本术语 (1)结点:树中的一个独立单元. (2)结点的度:结点拥有的子树数称为结点的度. (3)树的度:树的度是树内各结点的最大值. (4)叶子:度为0

《数据结构与算法分析》第四章--树 (1)

4.1 预备知识 定义: 树的递归定义:一棵树是一些节点的集合,这个集合若为空集:否则由一个根结点以及该节点的0个或者若干个非空子树组成,这些子树都与该根节点有边连接. 树叶:没有子节点的节点. 兄弟(Siblings):有相同父亲节点的节点. 节点n1到nj的路径:一个节点 序列:n1,n2...,nj. 路径的长:路径上的边数. 节点ni的深度:根节点到ni的唯一路径的长.根节点深度为0. 节点ni的高度:该节点ni到叶子节点的最长路径.树的高:根节点的高度. 4.1.1 树的实现 左孩子右