实现二叉链表的建立,并实现先序、中序和后序遍历c语言
时间: 2025-01-30 09:12:06 浏览: 41
好的,我很乐意为您介绍如何在C语言中实现二叉链表的建立以及先序、中序和后序遍历。以下是实现这些功能的基本步骤和代码示例:
1. 定义二叉树节点结构:
```c
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
```
2. 创建二叉树的函数(使用先序遍历的方式输入):
```c
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);
}
}
```
3. 先序遍历函数:
```c
void PreOrderTraverse(BiTree T) {
if (T) {
printf("%c ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
```
4. 中序遍历函数:
```c
void InOrderTraverse(BiTree T) {
if (T) {
InOrderTraverse(T->lchild);
printf("%c ", T->data);
InOrderTraverse(T->rchild);
}
}
```
5. 后序遍历函数:
```c
void PostOrderTraverse(BiTree T) {
if (T) {
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ", T->data);
}
}
```
使用这些函数,您可以创建一个二叉树并进行三种不同的遍历。以下是一个使用示例:
```c
int main() {
BiTree T;
printf("请输入二叉树的先序遍历序列(用#表示空节点):\n");
CreateBiTree(&T);
printf("先序遍历结果:\n");
PreOrderTraverse(T);
printf("\n");
printf("中序遍历结果:\n");
InOrderTraverse(T);
printf("\n");
printf("后序遍历结果:\n");
PostOrderTraverse(T);
printf("\n");
return 0;
}
```
这个程序首先创建一个二叉树,然后分别进行先序、中序和后序遍历,并输出遍历结果。
阅读全文
相关推荐


















