//***************************************** //树的多种结构定义 //***************************************** #define MAX_TREE_SIZE 100 typedef int TempType; //**************************************** //【双亲】表示法 //**************************************** typedef struct PTNode /* 结点结构*/ { TempType data; /* 结点数据*/ int partent; /* 双亲位置*/ }PTNode; typedef struct /* 树结构*/ { PTNode nodes[MAX_TREE_SISE]; /* 结点数组*/ int r,n; /* 树中根的位置和结点数*/ }PTree; //**************************************** // 【孩子】表示法 //**************************************** typedef struct CTNode /* 结点结构*/ { TempType child; /* 结点数据*/ struct CTNode *next; /* 下一个孩子结点*/ } *ChildPtr; typedef struct /* 表头结构*/ { TempType data; /* 结点数据*/ ChiledPtr firstChild; /* 孩子链表头指针*/ }CTBox; typedef struct /* 树结构*/ { CTBox nodes[MAX_TREE_SIZE]; /* 结点数组*/ int r,n; /* 树中根的位置和结点数*/ }CTree; //**************************************** // 【孩子兄弟】表示法 //**************************************** typedef struct CSNode /* 结点结构*/ { TempType data; /* 结点数据*/ struct CSNode *firstchild, *rigthsib; /* 第一个孩子结点, 该结点的右兄弟结点*/ } CSNode, *CSTree; //**************************************** // 【二叉树的二叉链表】表示法 //**************************************** typedef struct BiTNode /* 结点结构*/ { TempType data; /* 结点数据*/ struct BiTNode *lchild, *rchild; /* 左右孩子指针*/ } BiTNode, *BiTree; //**************************************** // 【线索二叉树】表示法 //**************************************** typedef enum{Link, Thread} PointerTag; /* Link表示存储的是孩子结点, Thread表示存储的是前驱后继*/ typedef struct BiThrNode /* 结点结构*/ { TempType data; /* 结点数据*/ struct BiThrNode *lchild, *rchild; /* 左右孩子指针*/ PointerTag LTag; /* 左标志*/ PointerTag RTag; /* 右标志*/ } BiThrNode, *BiThrTree;
本文详细介绍了树数据结构的不同表示方法,包括双亲表示法、孩子表示法、孩子兄弟表示法、二叉链表表示法及线索二叉树表示法等。每种表示法都通过具体的结构定义进行了说明。
&spm=1001.2101.3001.5002&articleId=78559831&d=1&t=3&u=ccc40dd741b34bd89b0887cd34ac814d)
9548

被折叠的 条评论
为什么被折叠?



