第六章 树和二叉树
一、教学内容
1、树和森林的概念(树的定义、树的术语、性质及运算);
2、二叉树的定义、性质及运算;
3、二叉树的存储结构(顺序、链式表示);
4、遍历二叉树
5、树的存储结构;树、森林与二叉树的转换;遍历树;遍历森林
6、哈夫曼树、哈夫曼编码。
二、教学要求:
1、了解树和森林的概念。包括树的定义、树的术语和性质;
2、熟练掌握二叉树的结构特性,熟悉二叉树的各种存储结构的特点及适用范围;
3、熟练掌握二叉树的遍历方法及遍历算法;
4、熟悉树的各种存储结构及其特点,掌握树、森林与二叉树的转换方法
5、掌握建立哈夫曼树和哈夫曼编码的方法及带权路径长度的计算。
第六章 树和二叉树
树是一类重要的非线性数据结构,是以分支关系定义的层次结构
6.1 树的定义
定义:树(tree)是n(n>0)个结点的有限集T,其中:有且仅有
一个特定的结点,称为树的根(root)当n>1时,其余结点可分
为m(m>0)个互不相交的有限集T1,T2,……Tm,其中每一个
集合本身又是一棵树,称为根的子树(subtree)
特点: 树中至少有一个结点——根
树中各子树是互不相交的集合
只有根结点的树
A
有子树的树
B
E
F
K
L
A
C
G
H
M
根
D
I
J
子树
树的形式定义
树是n个数据元素的有限集(记为T),对任
意一棵树T有:
⒈ 存在唯一一个称为根 的数据元素;
⒉ 当n>1时,其它数据元素可分为m(m>0) 个
互不相交的有限集T1,T2,…,Tm,其中每个集
合Ti(i=1,2,…,m)本身又是一棵树,并称树
Ti是根的子树.
性质:树是包含了n个结点的有穷集合V且在V上
定义了一个关系E ,显然有
①有仅有一个结点v0∈ V,对关系来说没有前驱,则称
之为树根。
②除结点v0外, V中每个结点都有且仅有一个前驱。
③除结点v0外, V中任何一个结点v∈ V都存在这样一
个序列v0 v1,… vk, vk= v, v0是树根,有序对(ki-1,ki)
∈ E,这样结点序列称之为路径。
树是一个连通的不含回路的图
树还有这样的性质:
n 树中每一个结点有唯一的一条通路
n 在树中,顶点数比边数多一。
基本术语(1)
(1)树的结点。树的结点包含一个数据元素及若干指向其子树的分
支。
(2)结点的度(Degree)。结点所拥有的子树数称为结点的度。
(3)叶子(Leaf)。度为0的结点称为叶子,或者称为终端结点。
(4)分支结点。度不为0的结点称为分支结点,或者称为非终端结点。
一棵树的结点除叶结点外,其余的都是分支结点。
(5)树的度。树中各结点度的最大值称为该树的度。
(6)边(edge):两个结点的有序对,称之联接这两个结点的边。
(7)孩子(Child)、双亲(Parent)、兄弟(Sibling)。树中一
个结点的子树的根结点称为这个结点的孩子。这个结点称为它孩
子结点的双亲。具有同一个双亲的孩子结点互称为兄弟。
(8)祖先、子孙。结点的祖先是从根到该结点所经分支上的所有结
点。以某结点为根的子树中的任一结点都称为该结点的子孙。
基本术语(2)
(9)结点的层数(Level)。规定树的根结点的层数为1,其余结
点的层数等于它的双亲结点的层数加1。
(10)堂兄弟。其双亲在同一层的结点互为堂兄弟。
(11)树的深度(Depth)。树中所有结点的最大层数称为树的深
度,也即高度。
(12)有序树和无序树。如果一棵树中结点的各子树从左到右是有
次序的,即若交换了某结点各子树的相对位置,则构成不同的树,
称这棵树为有序树;反之,则称为无序树。
(13)森林。零棵或有限棵不相交的树的集合称为森林。自然界中
树和森林是不同的概念,但在数据结构中,树和森林只有很小的
差别。任何一棵树,删去根结点就变成了森林。