二叉树的基本操作使用文件输入代码C语言
时间: 2024-05-10 19:17:45 浏览: 94
以下是二叉树的基本操作使用文件输入的代码示例(C语言):
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树的结构体
typedef struct BTreeNode {
int data; // 数据域
struct BTreeNode *left; // 左子树指针
struct BTreeNode *right; // 右子树指针
} BTreeNode, *BTree;
// 创建二叉树
void createBTree(BTree *root, FILE *fp) {
int data;
if (fscanf(fp, "%d", &data) == 1 && data != -1) { // 读取文件中的数据,如果读取成功且数据不为-1,则创建节点并继续创建左右子树
*root = (BTree)malloc(sizeof(BTreeNode));
(*root)->data = data;
createBTree(&((*root)->left), fp);
createBTree(&((*root)->right), fp);
} else { // 否则,将节点指针设置为NULL
*root = NULL;
}
}
// 先序遍历
void preOrder(BTree root) {
if (root) {
printf("%d ", root->data);
preOrder(root->left);
preOrder(root->right);
}
}
// 中序遍历
void inOrder(BTree root) {
if (root) {
inOrder(root->left);
printf("%d ", root->data);
inOrder(root->right);
}
}
// 后序遍历
void postOrder(BTree root) {
if (root) {
postOrder(root->left);
postOrder(root->right);
printf("%d ", root->data);
}
}
int main() {
FILE *fp;
BTree root = NULL;
// 打开文件
if ((fp = fopen("input.txt", "r")) == NULL) {
printf("Cannot open file.\n");
exit(1);
}
// 创建二叉树
createBTree(&root, fp);
// 关闭文件
fclose(fp);
// 遍历二叉树
printf("Preorder traversal: ");
preOrder(root);
printf("\n");
printf("Inorder traversal: ");
inOrder(root);
printf("\n");
printf("Postorder traversal: ");
postOrder(root);
printf("\n");
return 0;
}
```
在文件`input.txt`中输入二叉树节点的值,格式为先序遍历的顺序,空节点用-1表示。例如,下面的输入表示一个二叉树:
```
1 2 4 -1 -1 5 -1 -1 3 -1 -1
```
其对应的二叉树如下:
```
1
/ \
2 3
/ \
4 5
```
运行程序后,输出结果为:
```
Preorder traversal: 1 2 4 5 3
Inorder traversal: 4 2 5 1 3
Postorder traversal: 4 5 2 3 1
```
阅读全文