gpt4 book ai didi

c - 将C二进制搜索树保存到txt文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:41 25 4
gpt4 key购买 nike

我正在做一个 C BST 库,我正在尝试做一个将二叉搜索树保存到文本文件中的函数。我对如何做很困惑。这是我的树结构:

struct Node {
int value;
struct Node *left;
struct Node *right;
};

typedef struct Node TNode;
typedef struct Node *binary_tree;

树的创建:

binary_tree NewBinaryTree(int value_root) {
binary_tree newRoot = malloc(sizeof(TNode));
if (newRoot) {
newRoot->value = value_root;
newRoot->left = NULL;
newRoot->right = NULL;
}
return newRoot;
}

向其中添加元素:

void Insert(binary_tree *tree, int val) {
if (*tree == NULL) {
*tree = (binary_tree)malloc(sizeof(TNode));
(*tree)->value = val;
(*tree)->left = NULL;
(*tree)->right = NULL;
} else {
if (val < (*tree)->value) {
Insert(&(*tree)->left, val);
} else {
Insert(&(*tree)->right, val);
}
}
}

我开始了这个功能,但我不知道该怎么做:

void savetree(binary_tree *tree, char * filename)
{
FILE *afile;
int remainn, counter, readsize, i;
int *bb;

afile = fopen(filename, "wb");
if (afile) {
bb = calloc(sizeof(int), BBSIZE); //BBSIZE =4096
remainn = treesize(tree);
counter = 0;
while (remainn > 0) {
if (remainn > BBSIZE) {
readsize = BBSIZE;
} else {
readsize = remainn;
}

这里是 treesize 函数:

int treesize( binary_tree tree )
{
if( tree == NULL )
{
return (0) ;
}
else
{
return( 1 + treesize( tree->left ) + treesize( tree->right ) ) ;
}
}

这个保存树函数没有完成,但我不确定如何完成它/如果我做的是正确的。

谢谢

最佳答案

嵌套的括号和树是同一事物的替代表示。

所以写一棵树很容易

   void writenode(Node *node)
{
printf("{");
printf("%d ", node-.value);
if(node->left)
writenode(node->left);
if(node->right)
writenode(node->right);
printf("}");
}

阅读比较难。您必须检测格式错误的输入,并递归地构造子项。

关于c - 将C二进制搜索树保存到txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41253582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com