如何用C语言编写完整的树孩子表示法代码?包括先根遍历和后根遍历,并展示如何输出每个孩子的节点?
时间: 2024-12-12 15:30:40 浏览: 9
在C语言中,我们可以使用结构体来表示树节点,然后通过指针链接来构建树。以下是一个简单的二叉树的例子,包含了创建节点、插入节点以及先序和后序遍历的函数。注意这里我们假设有一个`typedef struct TreeNode`来定义树节点。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义树节点结构体
typedef struct TreeNode {
int data;
struct TreeNode* left; // 左子节点
struct TreeNode* right; // 右子节点
} Node;
// 创建新节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 先根遍历(递归)
void preOrderTraversal(Node* root) {
if (root != NULL) {
printf("%d ", root->data); // 输出当前节点
preOrderTraversal(root->left); // 遍历左子树
preOrderTraversal(root->right); // 遍历右子树
}
}
// 后根遍历(递归)
void postOrderTraversal(Node* root) {
if (root != NULL) {
postOrderTraversal(root->left); // 遍历左子树
postOrderTraversal(root->right); // 遍历右子树
printf("%d ", root->data); // 最后输出当前节点
}
}
// 示例:插入节点并遍历
int main() {
Node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
printf("Preorder traversal: ");
preOrderTraversal(root);
printf("\n");
printf("Postorder traversal: ");
postOrderTraversal(root);
printf("\n");
return 0;
}
```
阅读全文