第6章树第6章树数据结构(C描述)6
9二叉树的应用——哈夫曼树6
8树和森林6
7线索二叉树6
4遍历二叉树6
3二叉树的定义及存储结构6
1树的基本概念目录6
2树的存储结构6
5二叉排序树6
6平衡二叉树在许多领域许多问题不能或难用线性结构表示(哈夫曼编码、判定问题),故研究非线性的数据结构
树是一种应用十分广泛的非线性数据结构
1树的基本概念6
1树的定义树的定义树是由n(n≥0)个结点组成的有限集合
若n=0,称为空树;若n>0,则称为非空树,在任一棵非空树中:(1)有一个特定的称为根(root)的结点
它只有直接后继,但没有直接前驱;(2)除根结点以外的其它结点可以划分为m(m≥0)个互不相交的有限集合T0,T1,…,Tm-1,且每个集合Ti(i=0,1,…,m-1)本身又是一棵树,称为根的子树
由此可知,树的定义是一个递归的定义,即树的定义中又用到了树的概念
从定义中看出树结构具有以下特点:(1)有且仅有一个结点没有直接前驱,即根结点
(2)除根结点之外,其余所有结点有且仅有一个直接前趋结点
(3)包括根结点在内,每个结点可以有多个直接后继结点
从此可见,树型结构的特点是,数据元素之间存在着一对多的关系
树的结构参见图6-1
AABCDIHGFEJKLM(a)空树(b)仅含有根结点的树(c)含有多个结点的树图6-1树的示意图Ø在图6-1(c)中,树的根结点为A,该树还可以分为三个互不相交子集T0,T1,T2,具体请参见图6-2,其中T0={B,E,F,J,K,L},T1={C,G},T2={D,H,I,M}而T0,T1,T2又可以分解成若干棵不相交子树
如:T0可以分解成T00,T01两个不相交子集,T00={E,J,K,L},T01={F},而T00又可以分为三个不相交子集T000,T001,T002,其中,T000={J},T001={K},T00