这种存储方法的特点是寻找结点的双亲很容易, 但寻找结点的孩子比较困难。 算法实现举例: int Parent(Parent Tree T,int node) i if (node<anode>=T n)return -2 else return Titem node- parent 请单市鼠标左键换页
这种存储方法的特点是寻找结点的双亲很容易, 但寻找结点的孩子比较困难。 算法实现举例: int Parent(ParentTree T,int node) { if (node<0||node>=T.n) return -2; else return T.item[node].parent; }
2.孩子表示法 孩子表示法主要描述的是结点的孩子关系。由于 每个结点的孩子个数不定,所以利用链式存储结构更 加适宜。举例 请单市鼠标左键换页
2. 孩子表示法 孩子表示法主要描述的是结点的孩子关系。由于 每个结点的孩子个数不定,所以利用链式存储结构更 加适宜。举例:
root-0A 2345 BEDF 2—36_7 789 H 图5-4 请单市鼠标左键换页
图 5 - 4 root 0 A 2 1 4 ^ 1 C ^ 2 B 3 5 ^ 3 E ^ 4 D 6 ^ 5 F ^ 6 G 7 8 9 ^ 7 H ^ 8 I ^ 9 J ^
在C语言中,这种存储形式定义如下 #define maX TREE NodE size 1o typedef struct ChildNodet int child ∥该孩子结点在一维数组中的下标值 struct ChileNode * next;∥指向下一个孩子结点 3CNode; typedef struct( TEntry Type info;∥结点信息 CNode *firstchild;∥指向第一个孩子结点的指针 STRode; 请单市鼠标左键换页
在C语言中,这种存储形式定义如下: #define MAX_TREE_NODE_SIZE 10 typedef struct ChildNode{ int child; //该孩子结点在一维数组中的下标值 struct ChileNode *next; //指向下一个孩子结点 }CNode; typedef struct{ TEntryType info; //结点信息 CNode *firstchild; //指向第一个孩子结点的指针 }TNode;
typedef struct i TNode item MAX TREE NODE SiZe; int n, root; 为树中当前结点的数目,root为根结点在一维 数组中的位置 3 ChildRe 这种存储结构的特点是寻找某个结点的孩子比较 容易,但寻找双亲比较麻烦,所以,在必要的时候, 可以将双亲表示法和孩子表示法结合起来,即将一维 数组元素增加一个表示双亲结点的域 parent,用来指 示结点的双亲在一维数组中的位置。 请单市鼠标左键换页
typedef struct { TNode item[MAX_TREE_NODE_SIZE]; int n,root; //n为树中当前结点的数目,root为根结点在一维 数组中的位置 }ChildTree; 这种存储结构的特点是寻找某个结点的孩子比较 容易,但寻找双亲比较麻烦,所以,在必要的时候, 可以将双亲表示法和孩子表示法结合起来,即将一维 数组元素增加一个表示双亲结点的域parent,用来指 示结点的双亲在一维数组中的位置