二叉搜索树的序列化和反序列化

44 篇文章 0 订阅
43 篇文章 0 订阅

//请实现两个函数,分别用来序列化和反序列化二叉树。


#include "ostream"
#include "istream"

using namespace std;

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


//前序遍历,遇null化特殊字符$。
void serialize(treeNode* pRoot, ostream& stream)
{
	if (pRoot == NULL)
	{
		stream << "$,";
	}

	stream << pRoot->value << ",";
	serialize(pRoot->left, stream);
	serialize(pRoot->right, stream);
}

void deserialize(treeNode **pRoot, istream& stream)
{
	char num;
	if (num = stream.get() != '$')
	{
		*pRoot = new treeNode();
		(*pRoot)->value = atoi(&num);
		(*pRoot)->left = NULL;
		(*pRoot)->right = NULL;
		stream.ignore();

		deserialize(&((*pRoot)->left), stream);
		deserialize(&((*pRoot)->right), stream);
	}
	stream.ignore();
}
很棒!

序列化和反序列化,就是要把树写成序列,然后序列可以反写/重建成树。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值