树
6.1树的定义
树(Tree)是n(n≥0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree),如图所示。
对于树的定义还需要强调两点:
1.n>0时根结点是唯一的,不可能存在多个根结点,别和现实中的大树混在一起,现实中的树有很多根须,那是真实的树,数据结构中的树是只能有一根结点。
2.m>0时,子树的个数没有限制,但它们一定是互不相交的。像图6-2-3中的两个结构就不符合树的定义,因为它们都有相交的子树。
结点分类
结点间关系
树的其他相关概念
6.2树的抽象数据类型
ADT 树(tree)
Data
树是由一个根结点和若干棵子树构成。树中结点具有相同数据类型及层次关系。
Operation
InitTree(*T):构造空树T。
DestroyTree(*T):销毁树T。
CreateTree(*T,definition):按definition中给出树的定义来构造树。
clearTree(*T):若树T存在,则将树T清为空树。
TreeEmpty(T):若T为空树,返回true,否则返回false。
TreeDepth(T):返回T的深度。
Root(T):返回T的根结点。
Value(T,cur_e):cur_e是树T中一个结点,返回此结点的值。
Assign(T,cur_e,value):给树T的结点cur_e赋值为value。
Parent(T,cur_e