用c语言生成二叉树的二叉链表,并以前序,中序,后序遍历输出
时间: 2023-08-30 08:09:33 浏览: 46
下面是用c语言生成二叉树的二叉链表,以及前序、中序、后序遍历输出的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树的结构体
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
// 创建二叉树
void CreateBiTree(BiTree *T) {
char ch;
scanf("%c", &ch);
if (ch == '#') {
*T = NULL;
} else {
*T = (BiTree)malloc(sizeof(BiTNode));
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
// 前序遍历
void PreOrderTraverse(BiTree T) {
if (T != NULL) {
printf("%c ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
// 中序遍历
void InOrderTraverse(BiTree T) {
if (T != NULL) {
InOrderTraverse(T->lchild);
printf("%c ", T->data);
InOrderTraverse(T->rchild);
}
}
// 后序遍历
void PostOrderTraverse(BiTree T) {
if (T != NULL) {
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ", T->data);
}
}
int main() {
BiTree T = NULL;
printf("请输入二叉树的前序遍历序列(#表示空节点):\n");
CreateBiTree(&T);
printf("前序遍历:");
PreOrderTraverse(T);
printf("\n");
printf("中序遍历:");
InOrderTraverse(T);
printf("\n");
printf("后序遍历:");
PostOrderTraverse(T);
printf("\n");
return 0;
}
```
这里使用了递归的方法来实现前序、中序、后序遍历。在输入二叉树的前序遍历序列时,可以根据需要修改,比如可以使用字符数组来输入,或者从文件中读取。