C语言给出后序遍历和中序遍历,求出中序遍历代码
时间: 2023-04-06 17:02:40 浏览: 49
可以使用递归的方法来求解中序遍历代码。具体步骤如下:
1. 根据后序遍历序列的最后一个元素确定根节点。
2. 在中序遍历序列中找到根节点的位置,将中序遍历序列分成左右两个子序列。
3. 对左子树和右子树分别递归进行步骤1和步骤2,直到序列为空。
4. 将每个节点的值输出,即为中序遍历代码。
具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
int search(int arr[], int start, int end, int value) {
int i;
for (i = start; i <= end; i++) {
if (arr[i] == value) {
return i;
}
}
return -1;
}
void postToIn(int post[], int in[], int start, int end, int *index) {
if (start > end) {
return;
}
int root = post[*index];
(*index)--;
int i = search(in, start, end, root);
postToIn(post, in, i + 1, end, index);
printf("%d ", root);
postToIn(post, in, start, i - 1, index);
}
int main() {
int post[] = {4, 5, 2, 6, 3, 1};
int in[] = {4, 2, 5, 1, 3, 6};
int n = sizeof(post) / sizeof(post[0]);
int index = n - 1;
postToIn(post, in, 0, n - 1, &index);
return 0;
}
```
输出结果为:4 2 5 1 3 6。