用孩子链存储结构建立树的代码
时间: 2023-12-10 16:06:29 浏览: 27
下面是用孩子链存储结构建立树的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_CHILDREN 10 // 最多儿子数
typedef struct TreeNode {
int data;
struct TreeNode *children[MAX_CHILDREN]; // 指向孩子的指针数组
} TreeNode;
// 创建一个新节点
TreeNode* create_node(int data) {
TreeNode *new_node = (TreeNode*) malloc(sizeof(TreeNode));
new_node->data = data;
for (int i = 0; i < MAX_CHILDREN; i++) {
new_node->children[i] = NULL;
}
return new_node;
}
// 添加一个孩子节点
void add_child(TreeNode *parent, TreeNode *child) {
for (int i = 0; i < MAX_CHILDREN; i++) {
if (parent->children[i] == NULL) {
parent->children[i] = child;
return;
}
}
printf("Error: parent node is already full!\n");
}
// 递归打印树
void print_tree(TreeNode *root) {
if (root == NULL) {
return;
}
printf("%d ", root->data);
for (int i = 0; i < MAX_CHILDREN; i++) {
print_tree(root->children[i]);
}
}
int main() {
// 创建一棵树
TreeNode *root = create_node(1);
TreeNode *node2 = create_node(2);
TreeNode *node3 = create_node(3);
TreeNode *node4 = create_node(4);
TreeNode *node5 = create_node(5);
TreeNode *node6 = create_node(6);
TreeNode *node7 = create_node(7);
add_child(root, node2);
add_child(root, node3);
add_child(node2, node4);
add_child(node2, node5);
add_child(node3, node6);
add_child(node3, node7);
// 打印树
print_tree(root);
printf("\n");
return 0;
}
```
在上面的示例代码中,我们定义了一个 `TreeNode` 结构体,其中包含一个整型数据 `data` 和一个指向孩子的指针数组 `children`。 `MAX_CHILDREN` 宏定义了每个节点最多可以有多少个孩子。
`create_node` 函数用于创建一个新节点,并初始化节点数据和孩子数组。
`add_child` 函数用于将一个孩子节点添加到它的父节点中。它遍历父节点的孩子数组,找到一个空的位置,然后将孩子节点的指针存储在这个位置上。
最后,我们使用 `print_tree` 函数来递归打印整棵树。它首先打印当前节点的数据,然后遍历该节点的所有孩子节点,并递归调用 `print_tree` 函数来打印孩子节点的子树。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)