使用C语言实现二叉树的链式存储结构实现,包括:二叉树的定义、按照先序遍历的顺序创建二叉树、先序遍历、中序遍历及后序遍历等操作。
时间: 2025-06-15 08:25:07 浏览: 22
在C语言中,我们可以使用链式存储结构来实现二叉树。首先,我们需要定义一个节点结构体,包含两个指针(分别指向左孩子和右孩子),以及一个用于存储数据的域。
```c
typedef struct Node {
int data; // 节点的数据
struct Node* left; // 左孩子指针
struct Node* right; // 右孩子指针
} TreeNode;
```
接下来,我们通过递归的方式实现先序(根-左-右)、中序(左-根-右)和后序(左-右-根)遍历:
1. **创建二叉树 (先序遍历)**
先序遍历通常是创建二叉树的过程,例如从输入数组的第一个元素开始:
```c
void createPreorderTree(TreeNode** root, int arr[], int start, int end) {
if (start > end)
return;
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = arr[start];
newNode->left = newNode->right = NULL;
*root = newNode;
createPreorderTree(&newNode->left, arr, start + 1, end);
createPreorderTree(&newNode->right, arr, start + 1, end);
}
```
2. **先序遍历**
```c
void preorderTraversal(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->data); // 打印当前节点
preorderTraversal(node->left); // 遍历左子树
preorderTraversal(node->right); // 遍历右子树
}
}
```
3. **中序遍历**
```c
void inorderTraversal(TreeNode* node) {
if (node != NULL) {
inorderTraversal(node->left); // 遍历左子树
printf("%d ", node->data); // 打印当前节点
inorderTraversal(node->right); // 遍历右子树
}
}
```
4. **后序遍历**
```c
void postorderTraversal(TreeNode* node) {
if (node != NULL) {
postorderTraversal(node->left); // 遍历左子树
postorderTraversal(node->right); // 遍历右子树
printf("%d ", node->data); // 打印当前节点
}
}
```
阅读全文
相关推荐



















