bst的serialize和unserialize

12 篇文章 0 订阅
9 篇文章 0 订阅

将二叉树串行化输出到文件保存,再从文件中读入重新构造。

遍历方式采用先根遍历的方式。

个人感觉其他的遍历方式不能实现功能,具体原因还没有证明。

void serialize(node *root, ofstream &file)
	{
		if (!root)
			return;
	
		file << root->dat << " ";
		serialize(root->l, file);
		serialize(root->r, file);
	}

	node * unserialize(ifstream &file)
	{
		node * root = NULL;
		int v;
		file >> v;
		build_bst_pre(INT_MIN, INT_MAX, v, root, file);
		return root;
	}

	void build_bst_pre(int min, int max, int &v, node * &root, ifstream &file)
	{	
		if (v < max && v > min)
		{
			int val = v;
			root = new node(val);
			if (file >> v)
			{
				build_bst_pre(min, val, v, root->l, file);
				build_bst_pre(val, max, v, root->r, file);
			}		
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值