C语言:请输入一棵二叉树的扩展的前序序列,经过处理后生成一棵二叉树,然后对于该二叉树输出中序和后序遍历序列。
时间: 2023-07-24 12:21:38 浏览: 145
C语言二叉树的三种遍历方式的实现及原理
好的,我可以帮你解答这个问题。
以下是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 inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%c ", root->data);
inorderTraversal(root->right);
}
// 后序遍历二叉树
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%c ", root->data);
}
int main() {
printf("请输入一棵二叉树的扩展的前序序列:\n");
TreeNode* root = createTree();
printf("中序遍历结果为:");
inorderTraversal(root);
printf("\n");
printf("后序遍历结果为:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
输入格式:
```
AB#C##DE##F#G##
```
其中,`#`表示该节点为空。
输出结果:
```
中序遍历结果为:A B C D E F G
后序遍历结果为:C B E G F D A
```
希望能帮到你!
阅读全文