数据结构——树的基本概念
一、树的定义
1. 递归定义: 一个树(或树形)就是一个有限非空的结点集合T,其中:有一个特别标出的被称为该树(或树形)之根root(T)的结点;其余结点(根除外)被分成m>=0 个不相交的集合T1,T2,…,Tm,且T1,T2,…,Tm又都是树(或树形)。树(或树形)T1,T2,…,Tm被称作root(T)的子树(或子树形)。
2. 非递归定义: 树是包含n ( n ≥ 1 )个结点且满足如下条件的有限集合:
a.存在一个唯一的结点v0,它没有前驱结点,称为树的根(或根结点);
b.任何非根结点都有且仅有一个前驱结点,称为该结点的父结点;
c.任何结点都可能有多个( n1)后继结点,称之为该结点的子结点;若某结点没有后继结点,则称之为叶结点。
d.任一非根结点vk都有且仅有一条从v0到该结点的结点序列(或曰路径)v0 - v1 -…- vk,其中vi是(1<= i <=k)的子结点。
3.树的特点:① 有一个总根。② 没有分枝相交。③ 树有层次。
二、树的相关术语
1.度
一个结点的子结点的数目,称为该结点的度或者次数。一棵树的度为maxi=1,…, n D (i),其中n为树中结点总数,i指树中的第i个结点,D(i)表结点i的度。
2.叶结点、分支结点
度为0的结点被称为叶结点;度 > 0的结点被称为分支结点。
3.结点的层数
树形T中结点的层数递归定义如下:⑴ root(T)层数为零;⑵ 其余结点的层数为其前驱结点的层数加1 .
4.路径
树形中结点间的连线被称为边。若树形T中存在结点序列vm - vm+1 - … - vm-k,1<=k<=T的最大层数,满足vi+1是vi(m<=i<=m+k-1)的子结点,则称此结点序列为vm到vmk的路径,该路径所经历的边数 k 被称为路径长度。
5. 子孙结点、祖先结点
一棵树中若存在结点vm到vn的路径,则称vn为vm的子孙结点,vm为vn的祖先结点。
6.树的高度
树的高度为maxi=1,…, n NL (i),其中n为树中结点总数,i指树中第i个结点,NL(i)之值为结点i的层数。
树的高度是指树中结点的最大层数。
7.树的表示
三.树的相关操作
1、判树空:TREEEMPTY(T)
2、求根:ROOT(T)
3、求树的深度:TREEDEPTH(T)
4、求结点的brothers:同一双亲的孩子互称
5、求结点的双亲:PARENT(T, e)
6、求结点的孩子:CHILD(T, e, i)
7、建立树:CREATE_TREE(T, T1 , T2 , … , Tm )
8、遍历树:TRAVERSAL(T)