树的定义
树的数据逻辑结构是一对N的,除了根节点,每个元素只有一个前驱,但是可以有多个后继,具有层次关系,像家谱就是一个树的例子。
树是有n个结点的有限集合,当n大于零时,这个树有且仅有一个称为根的结点,从根节点延申出来的元素可以时n个,同时可以再延申。n=0时,该树就是空树。
树的第一层就是根结点,第二层都是称为第一层的孩子,第一层为第二层的父结点。第三层的都称为第二层的孩子,以此类推。
结点的分支的个数称为结点的度
终端结点:没有分支的结点叫做终端结点,也就是叶子。
树中结点的最大层次称为树的深度或树的高度。
有序树:如果树中的各子树的数据从左到右有序,改变任意一个元素,该树就改变。这样的树称为有序树。反之,无序的树称为无序树。
森林是m和互不相交的树的集合。
双亲表示法
定义的结点包括两个领域,一个数据域存放数据信息,双亲域用来只是本结点双亲结点再数组中的位置。
用双亲表示法创建一个结点:
typedef struct parent
{
int data;//数据域
int parent;//双亲的位置域
}PTNode;
树结构:
#define SIZE 100
typedef struct
{
PTnode nodes[SIZE];
int r;/