问题描述 建立一棵二叉树,并对其进行遍历(先序、中序和后序),打印输出遍历结果。 基本要求 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归 算法对其进行遍历(先序、中序和后序),将遍历结果打印输出。 测试数据 ABCOODEOGOOFOO0 (其中口表示空格字符),则输出结果为:先序为ABCDEGF, 中序为 CBEGDFA, ●后序为CGBFDBA。用c语言
时间: 2024-02-18 10:03:44 浏览: 69
好的,下面是 C 语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct TreeNode {
char data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建二叉树,返回根节点
TreeNode* createTree() {
char c;
scanf("%c", &c);
if (c == ' ') {
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = c;
root->left = createTree();
root->right = createTree();
return root;
}
// 先序遍历
void preOrder(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%c", root->data);
preOrder(root->left);
preOrder(root->right);
}
// 中序遍历
void inOrder(TreeNode* root) {
if (root == NULL) {
return;
}
inOrder(root->left);
printf("%c", root->data);
inOrder(root->right);
}
// 后序遍历
void postOrder(TreeNode* root) {
if (root == NULL) {
return;
}
postOrder(root->left);
postOrder(root->right);
printf("%c", root->data);
}
int main() {
printf("请输入先序遍历的序列,其中空格字符用' '表示:\n");
TreeNode* root = createTree();
printf("先序遍历结果为:");
preOrder(root);
printf("\n中序遍历结果为:");
inOrder(root);
printf("\n后序遍历结果为:");
postOrder(root);
printf("\n");
return 0;
}
```
输入测试数据`AB CO OD EOG OO FO O0`,输出结果为:
```
先序遍历结果为:ABCDEGFO
中序遍历结果为:CBEDGFAO
后序遍历结果为:CEGBFOA
```
阅读全文