c语言实现多叉树的数据结构
时间: 2023-08-13 08:07:43 浏览: 212
在C语言中,可以使用结构体和指针来实现多叉树的数据结构。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多叉树节点结构体
typedef struct TreeNode {
int data; // 节点数据
struct TreeNode* firstChild; // 第一个子节点
struct TreeNode* nextSibling; // 下一个兄弟节点
} TreeNode;
// 创建一个新的多叉树节点
TreeNode* createNode(int data) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = data;
newNode->firstChild = NULL;
newNode->nextSibling = NULL;
return newNode;
}
// 在指定节点下插入子节点
void insertChild(TreeNode* parent, TreeNode* child) {
if (parent == NULL || child == NULL) {
return;
}
if (parent->firstChild == NULL) {
parent->firstChild = child;
} else {
TreeNode* sibling = parent->firstChild;
while (sibling->nextSibling != NULL) {
sibling = sibling->nextSibling;
}
sibling->nextSibling = child;
}
}
// 先序遍历多叉树
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->data);
preorderTraversal(root->firstChild);
preorderTraversal(root->nextSibling);
}
// 测试示例
int main() {
TreeNode* root = createNode(1);
TreeNode* child1 = createNode(2);
TreeNode* child2 = createNode(3);
TreeNode* child3 = createNode(4);
insertChild(root, child1);
insertChild(root, child2);
insertChild(child1, child3);
printf("Preorder Traversal: ");
preorderTraversal(root);
printf("\n");
return 0;
}
```
在上述示例中,定义了一个`TreeNode`结构体,包含了节点的数据`data`、第一个子节点`firstChild`和下一个兄弟节点`nextSibling`。使用`createNode()`函数可以创建一个新的节点,并使用`insertChild()`函数在指定节点下插入子节点。
通过先序遍历`preorderTraversal()`函数,可以按照先根节点、然后递归遍历子节点和兄弟节点的顺序遍历多叉树。在示例中,创建了一个简单的多叉树,并进行了先序遍历输出。
需要注意的是,这只是一个简单的多叉树实现示例,实际应用中可能需要考虑更复杂的操作和功能。