双亲存储结构的类型声明如下:typedef structElemType data;//节点的值/ /指向双亲的位置int parent;PTree[MaxSize];0B0思考题:该存储结构的优缺点?0C0DE2F25-62G(b)(a)26
26 双亲存储结构的类型声明如下: typedef struct { ElemType data; //节点的值 int parent; //指向双亲的位置 } PTree[MaxSize]; 思考题:该存储结构的优缺点? A B C D E F G A -1 B 0 C 0 D 0 E 2 F 2 G 2 0 1 2 3 4 5 6 (a) (b)
2.孩子链存储结构孩子链存储结构可按树的度(即树中所有节点度的最大值)设计节点的孩子节点指针域个数。以下左图的树对应的孩子链存储结构如右图所示。AVACAIANDAAGAAAC树的孩子链存储结构示意图27
27 2. 孩子链存储结构 孩子链存储结构可按树的度(即树中所有节点度的最大值) 设计节点的孩子节点指针域个数。以下左图的树对应的孩子链 存储结构如右图所示。 树的孩子链存储结构示意图 A B C D E F G A ∧ B C ∧ ∧ ∧ D ∧ ∧ ∧ E ∧ ∧ F ∧ ∧ ∧ G ∧ ∧ ∧
孩子链存储结构的节点类型声明如下:typedef struct node//节点的值ElemType data;//指向孩子节点struct node *sons[Maxsons];TSonNode;其中,MaxSons为最多的孩子节点个数。思考题:该存储结构的优缺点?28
28 孩子链存储结构的节点类型声明如下: typedef struct node { ElemType data; //节点的值 struct node *sons[MaxSons]; //指向孩子节点 } TSonNode; 其中,MaxSons为最多的孩子节点个数。 思考题:该存储结构的优缺点?
3.孩子兄弟链存储结构孩子兄弟链存储结构是为每个节点设计三个域:一个数据元素域,一个该节点的第一个孩子节点指针域,一个该节点的下一个兄弟节点指针域。FT树的孩子兄弟链存储结构示意图29
29 3. 孩子兄弟链存储结构 孩子兄弟链存储结构是为每个节点设计三个域:一个数 据元素域,一个该节点的第一个孩子节点指针域,一个该 节点的下一个兄弟节点指针域。 树的孩子兄弟链存储结构示意图 A B C D E F G A ∧ B ∧ D ∧ C ∧ E ∧ G ∧ ∧ F ∧
兄弟链存储结构中节点的类型声明如下:typedef struct tnode//节点的值ElemType data;//指向兄弟struct tnode *hp;//指向孩子节点struct tnode *vp;TSBNode;每个节点固定只有两个指针域思考题:该存储结构的优缺点?30
30 兄弟链存储结构中节点的类型声明如下: typedef struct tnode { ElemType data; //节点的值 struct tnode *hp; //指向兄弟 struct tnode *vp; //指向孩子节点 } TSBNode; 每个节点固定只有两个指针域。 思考题:该存储结构的优缺点?