用c语言采用孩子兄弟表示法建立一棵树
时间: 2024-02-28 11:55:50 浏览: 26
好的,下面是用 C 语言采用孩子兄弟表示法建立一棵树的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_TREE_SIZE 100 // 树的最大结点数
typedef char ElemType; // 树结点的数据类型
typedef struct CSNode {
ElemType data; // 结点数据
struct CSNode *firstchild, *nextsibling; // 孩子结点和兄弟结点指针
} CSNode, *CSTree;
/**
* 采用孩子兄弟表示法建立一棵树
* @param T 树的根结点指针
*/
void createTree(CSTree *T)
{
ElemType data;
scanf("%c", &data); // 读入结点数据
if (data == '#') { // 如果是 '#',则表示该结点为空
*T = NULL;
} else {
*T = (CSTree) malloc(sizeof(CSNode)); // 创建新结点
(*T)->data = data; // 设置结点数据
createTree(&((*T)->firstchild)); // 递归建立孩子结点
createTree(&((*T)->nextsibling))); // 递归建立兄弟结点
}
}
int main()
{
CSTree T;
createTree(&T);
return 0;
}
```
以上就是建立一棵树的示例代码,其中 `createTree` 函数采用递归的方式,按照先序遍历的顺序建立树。在读入结点数据时,如果是 `#`,则表示该结点为空。在建立孩子结点和兄弟结点时,也采用递归的方式进行。