从文件读入整数序列,生成二叉排序树,用C语言实现
时间: 2024-03-23 10:43:50 浏览: 55
二叉排序树的C语言实现
5星 · 资源好评率100%
以下是使用 C 语言从文件中读入整数序列,生成二叉排序树的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
struct TreeNode* insert(struct TreeNode* root, int val) {
if (root == NULL) {
root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = val;
root->left = NULL;
root->right = NULL;
} else if (val < root->val) {
root->left = insert(root->left, val);
} else {
root->right = insert(root->right, val);
}
return root;
}
struct TreeNode* build_BST(char* filename) {
struct TreeNode* root = NULL;
FILE* fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return NULL;
}
char buf[1024];
while (fgets(buf, 1024, fp) != NULL) {
int val = atoi(buf);
root = insert(root, val);
}
fclose(fp);
return root;
}
```
以上代码中,`struct TreeNode` 表示二叉排序树的节点,包含值 `val`,以及左右子节点 `left` 和 `right`。`insert` 函数用于向二叉排序树中插入新节点,并保证树的排序性质。`build_BST` 函数用于从文件中读入整数序列,并构建二叉排序树。该函数首先打开文件,读取每一行并将字符串转换为整数,然后将其插入到二叉排序树中。最终返回根节点 `root`。注意在使用完文件后需要关闭文件句柄,避免资源泄露。
阅读全文