c_cpp 序列化反序列化二叉树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 序列化反序列化二叉树相关的知识,希望对你有一定的参考价值。


// in pre-order
void serialize_btree(TreeNode *root, string &s) {
	if(!root) {
		s += '#';
		return;
	}
	s += to_string(root->data);
	serialize_btree(root->left, s);
	serialize_btree(root->right, s);
}

// in pre-order
TreeNode* deserialize_btree(string &s, int &curr) {
	if(curr > s.size()) return NULL;
	if(s[curr] == '#') {
		curr++;
		return NULL;
	}
	TreeNode *root = new TreeNode(s[curr++]);
	root->left = deserialize_btree(s, curr);  // gist, this "curr" is different from the below "curr", since we use reference
	root->right = deserialize_btree(s, curr); // gist, this "curr" is different from the above "curr"
	return root;
}

以上是关于c_cpp 序列化反序列化二叉树的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 297.序列化和反序列化二叉树 - 难度硬 - 2018.9.14

python代码实现二叉树的序列化和反序列化

二叉树的序列化&反序列化

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

Lintcode---二叉树的序列化和反序列化

c_cpp 反序列化BST二叉搜索树