利用先序序列建立二叉树,并输出先序、中序和后序序列,使用c语言
时间: 2024-05-04 19:03:18 浏览: 96
下面是利用先序序列建立二叉树,并输出先序、中序和后序序列的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点结构体定义
typedef struct TreeNode {
char data; // 数据域
struct TreeNode* left; // 左子树指针
struct TreeNode* right; // 右子树指针
} TreeNode;
// 根据先序序列建立二叉树
TreeNode* createTree() {
char data;
scanf("%c", &data);
if (data == '#') {
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = data;
root->left = createTree();
root->right = createTree();
return root;
}
// 先序遍历
void preOrder(TreeNode* root) {
if (root) {
printf("%c ", root->data);
preOrder(root->left);
preOrder(root->right);
}
}
// 中序遍历
void inOrder(TreeNode* root) {
if (root) {
inOrder(root->left);
printf("%c ", root->data);
inOrder(root->right);
}
}
// 后序遍历
void postOrder(TreeNode* root) {
if (root) {
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#C##DE###
```
示例输出:
```
先序遍历结果为:A B C D E
中序遍历结果为:B A C E D
后序遍历结果为:B C E D A
```
阅读全文