给定二叉树前序遍历,求中序遍历,用c语言实现
时间: 2023-04-04 11:01:29 浏览: 77
二叉树已知前序和中序遍历,求后序遍历的C++代码实现
4星 · 用户满意度95%
好的,这个问题可以回答。以下是一个用 C 语言实现的函数,可以根据给定的前序遍历数组和节点数量,计算出对应的中序遍历数组。
```c
void preorder_to_inorder(int* preorder, int* inorder, int n) {
if (n == ) {
return;
}
int root = preorder[];
int i;
for (i = ; i < n; i++) {
if (inorder[i] == root) {
break;
}
}
preorder_to_inorder(preorder + 1, inorder, i);
preorder_to_inorder(preorder + i + 1, inorder + i + 1, n - i - 1);
printf("%d ", root);
}
```
这个函数的基本思路是,首先找到前序遍历的第一个节点,即根节点。然后在中序遍历中找到这个节点的位置,这个位置左边的节点都是左子树的节点,右边的节点都是右子树的节点。然后递归处理左子树和右子树,直到处理完所有节点。在递归的过程中,我们可以通过打印根节点的方式,输出中序遍历的结果。
希望这个回答能够帮到你!
阅读全文