树的孩子表示法c语言代码
时间: 2023-07-28 09:06:30 浏览: 49
以下是一个简单的树的孩子表示法的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_CHILDREN 10 // 孩子节点最大数量
// 定义树节点结构体
typedef struct TreeNode {
int value; // 节点值
struct TreeNode *children[MAX_CHILDREN]; // 孩子节点数组
} TreeNode;
// 创建新的树节点
TreeNode* createNode(int value) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->value = value;
for (int i = 0; i < MAX_CHILDREN; i++) {
node->children[i] = NULL;
}
return node;
}
// 添加孩子节点
void addChild(TreeNode* parent, TreeNode* child) {
for (int i = 0; i < MAX_CHILDREN; i++) {
if (parent->children[i] == NULL) {
parent->children[i] = child;
return;
}
}
printf("Failed to add child to parent (parent full)\n");
}
// 遍历树(深度优先遍历)
void traverseTree(TreeNode* node) {
if (node == NULL) {
return;
}
printf("%d ", node->value);
for (int i = 0; i < MAX_CHILDREN; i++) {
traverseTree(node->children[i]);
}
}
int main() {
// 创建树节点
TreeNode* root = createNode(1);
TreeNode* child1 = createNode(2);
TreeNode* child2 = createNode(3);
TreeNode* child3 = createNode(4);
// 添加孩子节点
addChild(root, child1);
addChild(root, child2);
addChild(child1, child3);
// 遍历树
traverseTree(root);
// 释放树节点内存
free(root);
free(child1);
free(child2);
free(child3);
return 0;
}
```