帮我写一个程序,用C语言写,实现的功能包括1.创建二叉树的二叉链表 2. 实现二叉树的3种遍历递归算法并分别打印
时间: 2023-12-03 13:44:34 浏览: 85
二叉树的创建与遍历,C语言实现
好的,下面是实现代码:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *left;
struct node *right;
} Node;
// 创建二叉树的函数
Node *createTree() {
Node *root = NULL;
int data;
printf("请输入节点的值(-1表示结束):");
scanf("%d", &data);
if (data == -1) {
return NULL;
} else {
root = (Node *)malloc(sizeof(Node));
root->data = data;
printf("请输入 %d 节点的左子节点:", data);
root->left = createTree();
printf("请输入 %d 节点的右子节点:", data);
root->right = createTree();
return root;
}
}
// 递归实现前序遍历
void preOrder(Node *root) {
if (root != NULL) {
printf("%d ", root->data);
preOrder(root->left);
preOrder(root->right);
}
}
// 递归实现中序遍历
void inOrder(Node *root) {
if (root != NULL) {
inOrder(root->left);
printf("%d ", root->data);
inOrder(root->right);
}
}
// 递归实现后序遍历
void postOrder(Node *root) {
if (root != NULL) {
postOrder(root->left);
postOrder(root->right);
printf("%d ", root->data);
}
}
int main() {
Node *root = createTree();
printf("前序遍历结果为:");
preOrder(root);
printf("\n中序遍历结果为:");
inOrder(root);
printf("\n后序遍历结果为:");
postOrder(root);
printf("\n");
return 0;
}
```
运行结果示例:
```
请输入节点的值(-1表示结束):1
请输入 1 节点的左子节点:2
请输入 2 节点的左子节点:-1
请输入 2 节点的右子节点:-1
请输入 1 节点的右子节点:3
请输入 3 节点的左子节点:-1
请输入 3 节点的右子节点:-1
前序遍历结果为:1 2 3
中序遍历结果为:2 1 3
后序遍历结果为:2 3 1
```
阅读全文