二叉树的二叉链表存储c语言
时间: 2023-11-18 14:05:24 浏览: 91
以下是二叉树的二叉链表存储的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode {
int data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
// 创建二叉树
void createBiTree(BiTree *T) {
int val;
scanf("%d", &val);
if (val == -1) {
*T = NULL;
} else {
*T = (BiTree)malloc(sizeof(BiTNode));
(*T)->data = val;
createBiTree(&(*T)->lchild);
createBiTree(&(*T)->rchild);
}
}
// 先序遍历
void preOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
printf("%d ", T->data);
preOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
}
// 中序遍历
void inOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
inOrderTraverse(T->lchild);
printf("%d ", T->data);
inOrderTraverse(T->rchild);
}
// 后序遍历
void postOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
postOrderTraverse(T->lchild);
postOrderTraverse(T->rchild);
printf("%d ", T->data);
}
int main() {
BiTree T;
printf("请输入二叉树的先序遍历(-1 表示空节点):\n");
createBiTree(&T);
printf("先序遍历结果:");
preOrderTraverse(T);
printf("\n中序遍历结果:");
inOrderTraverse(T);
printf("\n后序遍历结果:");
postOrderTraverse(T);
printf("\n");
return 0;
}
```
以上代码实现了二叉树的创建、先序遍历、中序遍历和后序遍历,并且采用了二叉链表存储结构。其中 `BiTNode` 表示二叉树节点,`BiTree` 表示二叉树指针,`data` 表示节点数据,`lchild` 和 `rchild` 分别表示左子树和右子树。创建二叉树的函数采用递归方式,遍历函数采用递归方式实现。
阅读全文