xueli
任务前提:
- 树的存储结构为孩子链表
- 返回值为树的双亲结点CTBox
- 考虑当i>数的结点数量的情况以及树为空的情况
树的孩子链表
#define maxsize 50
typedef struct CTnode {
int child;
struct CTnode* next;
}*ChildPtr;//孩子结点
typedef struct {
int data;
ChildPtr firstchild;
}CTbox;//双亲结点
typedef struct {
CTbox node[maxsize];
int n, r;//代表结点数和根节点的位置;
}CTree;//树
辅助测试函数
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
typedef int TElemType;
typedef int Status;
#define OK 1
Status CreateTree(CTree& T)
{
//构建一棵树
printf("请输入结点数及根结点的位置下标:\n");
scanf_s("%d %d", &T.n, &T.r);
//printf("请输入各节点的值\n");
for (int i = 0; i < T.n; ++i)
{
scanf_s("%d", &T.node[i].data);
T.node[i].firstchild = NULL;
}
//printf("创建每个结点的孩子结点...\n");
//system("pause");
for (int i = 0; i < T.n; ++i)
{