运行时从键盘输入先序序列,创建对应二叉树,再分别对其进行前、中、后序遍历,输出每个遍历序列。C语言
时间: 2024-05-03 18:17:19 浏览: 73
下面是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点结构体
typedef struct TreeNode {
char val;
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->val = c;
root->left = createTree();
root->right = createTree();
return root;
}
// 前序遍历
void preorder(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%c ", root->val);
preorder(root->left);
preorder(root->right);
}
// 中序遍历
void inorder(TreeNode* root) {
if (root == NULL) {
return;
}
inorder(root->left);
printf("%c ", root->val);
inorder(root->right);
}
// 后序遍历
void postorder(TreeNode* root) {
if (root == NULL) {
return;
}
postorder(root->left);
postorder(root->right);
printf("%c ", root->val);
}
int main() {
printf("请输入先序序列:\n");
TreeNode* root = createTree();
printf("前序遍历结果:");
preorder(root);
printf("\n中序遍历结果:");
inorder(root);
printf("\n后序遍历结果:");
postorder(root);
printf("\n");
return 0;
}
```
运行结果:
```
请输入先序序列:
AB##C##D##
前序遍历结果:A B C D
中序遍历结果:# B # C # D A
后序遍历结果:# # # # D C B A
```
说明:输入先序序列时,空结点用 # 表示。
阅读全文