帮我写一个程序,用C语言写,实现的功能包括1.创建二叉树的二叉链表 2. 实现二叉树的3种遍历递归算法并分别打印,注意输入的数据类型为字符
时间: 2023-12-03 13:44:36 浏览: 68
头歌数据结构二叉树的二叉链表存储及基本操作
5星 · 资源好评率100%
好的,下面是代码:
```c
#include <stdio.h>
#include <stdlib.h>
//定义二叉树结构体
typedef struct node {
char data;
struct node *left;
struct node *right;
} Node;
//创建二叉树的函数
Node* createTree() {
Node *root = NULL;
char c;
scanf("%c", &c);
if (c == '#') {
root = NULL;
} else {
root = (Node*)malloc(sizeof(Node));
root->data = c;
root->left = createTree();
root->right = createTree();
}
return root;
}
//先序遍历
void preOrder(Node *root) {
if (root == NULL) {
return;
}
printf("%c ", root->data);
preOrder(root->left);
preOrder(root->right);
}
//中序遍历
void inOrder(Node *root) {
if (root == NULL) {
return;
}
inOrder(root->left);
printf("%c ", root->data);
inOrder(root->right);
}
//后序遍历
void postOrder(Node *root) {
if (root == NULL) {
return;
}
postOrder(root->left);
postOrder(root->right);
printf("%c ", root->data);
}
int main() {
printf("请输入字符序列来创建二叉树,'#'表示空节点:\n");
Node *root = createTree();
printf("先序遍历:");
preOrder(root);
printf("\n中序遍历:");
inOrder(root);
printf("\n后序遍历:");
postOrder(root);
printf("\n");
return 0;
}
```
注意,这里的输入数据类型为字符,所以每个节点的数据类型为 `char`。在创建二叉树时,输入 `#` 表示空节点。先序遍历、中序遍历和后序遍历都是递归算法,分别对应 `preOrder()`、`inOrder()` 和 `postOrder()` 函数。
阅读全文