二叉树的二叉链表存储表示C语言
时间: 2024-03-01 10:45:58 浏览: 78
以下是二叉树的二叉链表存储表示C语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
// 定义二叉树结构体
typedef struct BiTNode {
ElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
// 创建二叉树
void CreateBiTree(BiTree *T) {
ElemType ch;
scanf("%d", &ch);
if (ch == -1) {
*T = NULL;
} else {
*T = (BiTree)malloc(sizeof(BiTNode));
if (!*T) {
exit(0);
}
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
// 前序遍历
void PreOrderTraverse(BiTree T) {
if (T) {
printf("%d ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
// 中序遍历
void InOrderTraverse(BiTree T) {
if (T) {
InOrderTraverse(T->lchild);
printf("%d ", T->data); InOrderTraverse(T->rchild);
}
}
// 后序遍历
void PostOrderTraverse(BiTree T) {
if (T) {
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%d ", T->data);
}
}
int main() {
BiTree T = NULL;
printf("请输入二叉树的结点,-1表示空结点:\n");
CreateBiTree(&T);
printf("前序遍历结果为:");
PreOrderTraverse(T);
printf("\n中序遍历结果为:");
InOrderTraverse(T);
printf("\n后序遍历结果为:");
PostOrderTraverse(T);
return 0;
}
```
阅读全文