二叉树的序列化和反序列化C语言
时间: 2024-05-07 08:14:06 浏览: 327
二叉树C语言
5星 · 资源好评率100%
二叉树的序列化和反序列化是指将二叉树转化为字符串,或将字符串转化为二叉树的过程。在C语言中,可以使用递归的方式来实现二叉树的序列化和反序列化。
以下是二叉树序列化的实现方法:
```C
void serialize(TreeNode* root, FILE* fp) {
if (root == NULL) {
fprintf(fp, "# ");
return;
}
fprintf(fp, "%d ", root->val);
serialize(root->left, fp);
serialize(root->right, fp);
}
```
该方法中,我们首先判断当前节点是否为空,如果为空,则在字符串中加入一个特殊字符“#”,表示该节点为空。如果当前节点不为空,则将该节点的值加入字符串中,然后递归序列化左子树和右子树。
以下是二叉树反序列化的实现方法:
```C
TreeNode* deserialize(FILE* fp) {
char c;
fscanf(fp, "%c", &c);
if (c == '#') {
return NULL;
}
int val;
fscanf(fp, "%d", &val);
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = val;
root->left = deserialize(fp);
root->right = deserialize(fp);
return root;
}
```
该方法中,我们首先从字符串中读取一个字符,如果该字符为特殊字符“#”,则返回空节点。如果该字符为数字,则读取该数字,并创建一个新节点。然后递归创建左子树和右子树,并将其赋值给新节点。
阅读全文