给定顺序存储的二叉树,要求输出遍历该二叉树得到的先序、中序、后序遍历序列。 二叉树的顺序存储是指用一组地址连续的存储单元依次自上而下、自左向右存储完全二叉树上的结点元素(一般二叉树则将其每个结点与完全二叉树上的结点对照)。 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。 GCCC++14 int main() { int data; n = 1;//下标从1开始 while(scanf("%d", &data), data!=-1) { tree[n++] = data; } PreOrder(1); printf("\n"); InOrder(1); printf("\n"); PostOrder(1); printf("\n"); return 0; }
时间: 2024-01-14 19:04:36 浏览: 48
以下是完整代码实现顺序存储的二叉树的先序、中序、后序遍历:
```c
#include <stdio.h>
#define MAX_SIZE 100
int tree[MAX_SIZE];
int n;
void PreOrder(int root) {
if (root >= n || tree[root] == -1) return;
printf("%d ", tree[root]);
PreOrder(root * 2);
PreOrder(root * 2 + 1);
}
void InOrder(int root) {
if (root >= n || tree[root] == -1) return;
InOrder(root * 2);
printf("%d ", tree[root]);
InOrder(root * 2 + 1);
}
void PostOrder(int root) {
if (root >= n || tree[root] == -1) return;
PostOrder(root * 2);
PostOrder(root * 2 + 1);
printf("%d ", tree[root]);
}
int main() {
int data;
n = 1; //下标从1开始
while (scanf("%d", &data), data != -1) {
tree[n++] = data;
}
PreOrder(1);
printf("\n");
InOrder(1);
printf("\n");
PostOrder(1);
printf("\n");
return 0;
}
```
输入样例:
```
1 2 3 -1 -1 4 5 -1 -1 -1 -1
```
输出结果为:
```
1 2 4 5 3
4 2 5 1 3
4 5 2 3 1
```
阅读全文