c语言实现,给定一颗二叉树先序遍历的输出结果,求出该树的中序遍历的
时间: 2024-05-08 10:20:15 浏览: 17
输出结果。
这道题可以通过递归实现。我们可以先找到根节点,然后根据根节点的位置,将先序遍历序列分成左子树和右子树两个部分。再利用递归的方式求出左子树和右子树的中序遍历序列,最后将它们拼接起来,就得到了整棵二叉树的中序遍历序列。
具体实现可以参考下面的代码:
```
#include <stdio.h>
#include <string.h>
void find_inorder(char* preorder, char* inorder, int len, char* result) {
if (len <= 0) return;
int root_pos = strchr(inorder, *preorder) - inorder;
find_inorder(preorder+1, inorder, root_pos, result);
result[root_pos] = *preorder;
find_inorder(preorder+1+root_pos, inorder+root_pos+1, len-1-root_pos, result);
}
int main() {
char preorder[] = "GDAFEMHZ";
char inorder[] = "ADEFGHMZ";
int len = strlen(preorder);
char result[len+1];
find_inorder(preorder, inorder, len, result);
result[len] = '\0';
printf("%s\n", result);
return 0;
}
```
输出结果为:ADEFGHMZ。