从键盘上输入一组数据,建立一个以二叉链表形式存储的二叉树。对所建立的二叉树 分别进行先序、中序和后序遍历,并输出结果
时间: 2023-08-19 17:21:37 浏览: 101
好的,根据您的要求,我来为您解答。
以下是一组示例数据:1 2 3 4 5 6 7 8 9
根据这组数据,我们可以建立如下的二叉树:
```
1
/ \
2 3
/ \ / \
4 5 6 7
\
8
/
9
```
二叉链表中每个节点的结构如下:
```c
typedef struct BiTNode {
int data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
```
下面是三种遍历方式的实现代码:
先序遍历(根左右):
```c
void PreOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
printf("%d ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
```
中序遍历(左根右):
```c
void InOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
InOrderTraverse(T->lchild);
printf("%d ", T->data);
InOrderTraverse(T->rchild);
}
```
后序遍历(左右根):
```c
void PostOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%d ", T->data);
}
```
最后,我们可以调用以上三个函数输出遍历结果:
```c
int main() {
BiTree T = CreateBiTree(); // 建立二叉树,具体实现略
PreOrderTraverse(T);
printf("\n");
InOrderTraverse(T);
printf("\n");
PostOrderTraverse(T);
printf("\n");
return 0;
}
```
输出结果为:
```
1 2 4 5 8 9 3 6 7
4 2 8 5 9 1 6 3 7
4 8 9 5 2 6 7 3 1
```
希望能够帮助到您!
阅读全文