题目描述 假设二叉树中每个结点值为单个字符(不超过100个),已知其中序序列和后序序列,求二叉树的先序序列。 输入格式 两行,每行一个字符串,分别为二叉树的中序序列和后序序列 输出格式 一个字符串,为二叉树的先序序列用C语言做
时间: 2024-01-23 08:40:18 浏览: 82
以下是C语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100
// 定义二叉树结点
typedef struct node {
char data;
struct node *left, *right;
} Node;
// 根据中序序列和后序序列构建二叉树
Node *build_tree(char *inorder, char *postorder, int n) {
if (n == 0) return NULL; // 递归边界
Node *root = (Node *)malloc(sizeof(Node));
root->data = postorder[n-1];
int p = strchr(inorder, postorder[n-1]) - inorder;
root->left = build_tree(inorder, postorder, p);
root->right = build_tree(inorder+p+1, postorder+p, n-p-1);
return root;
}
// 先序遍历二叉树
void preorder(Node *root) {
if (!root) return;
printf("%c ", root->data);
preorder(root->left);
preorder(root->right);
}
int main() {
char inorder[MAXN], postorder[MAXN];
scanf("%s %s", inorder, postorder);
int n = strlen(inorder);
Node *root = build_tree(inorder, postorder, n);
preorder(root);
return 0;
}
```
输入示例:
```
DBACEGF ABCDEFG
```
输出示例:
```
ABDCEGF
```
阅读全文
相关推荐


















