练习4.1 根据后序和中序遍历输出先序遍历
时间: 2023-11-17 16:08:55 浏览: 127
根据后序和中序遍历输出先序遍历的方法如下:
1. 后序遍历的最后一个节点为根节点,将其输出。
2. 在中序遍历中找到根节点的位置,将中序遍历分为左子树和右子树两部分。
3. 根据左子树和右子树的长度,在后序遍历中分出左子树和右子树两部分。
4. 递归地对左子树和右子树进行上述操作,直到遍历完整棵树。
5. 输出的顺序即为先序遍历的顺序。
下面是代码实现:
```
void postToPre(int post[], int in[], int n) {
int root = post[n-1];
printf("%d ", root);
int i;
for (i = 0; i < n; i++) {
if (in[i] == root) {
break;
}
}
if (i > 0) {
postToPre(post, in, i);
}
if (i < n-1) {
postToPre(post+i, in+i+1, n-i-1);
}
}
```
阅读全文