这种存储方法的特点是寻找结点的双亲很容易, 但寻找结点的孩子比较困难。 算法实现举例 int Parent(ParentTree T, int node) i if (node<o node>=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 CBEDF 236 7+89 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 ChildNode( int child ∥该孩子结点在一维数组中的下标值 struct chilenode*next;∥指向下一个孩子结点 JCNode; typedef struct TEntryType 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为根结点在一维 数组中的位置 I ChildTrees 这种存储结构的特点是寻找某个结点的孩子比较 容易,但寻找双亲比较麻烦,所以,在必要的时候, 可以将双亲表示法和孩子表示法结合起来,即将一维 数组元素增加一个表示双亲结点的域 parent,用来指 示结点的双亲在一维数组中的位置。 请单鼠标左键换页!
typedef struct { TNode item[MAX_TREE_NODE_SIZE]; int n,root; //n为树中当前结点的数目,root为根结点在一维 数组中的位置 }ChildTree; 这种存储结构的特点是寻找某个结点的孩子比较 容易,但寻找双亲比较麻烦,所以,在必要的时候, 可以将双亲表示法和孩子表示法结合起来,即将一维 数组元素增加一个表示双亲结点的域parent,用来指 示结点的双亲在一维数组中的位置