您的位置:首页 > 职场人生

面试题62:序列化二叉树

2015-05-04 13:06 183 查看
题目:请实现两个函数,分别用来序列化和反序列化二叉树。

参考:/article/7672620.html

序列化指的是将一棵二叉树保存到文件中,反序列化就是从文件中读取二叉树结点值重构原来的二叉树。

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

//序列化
void Serialize(BTNode * root,ostream & out)
{
if(root==NULL)
{
//如果结点为空,写入#
out<<"# ";
}
//将结点的值写入
out<<root->value<<' ';
Serialize(root->left,out);
Serialize(root->right,out);
}
//反序列化,从一个文件中读取遍历序列构建二叉树
void Deserialize(BTNode ** root,istream & in)
{
int number;
//如果读出的字符是数字
if(ReadStream(in,&number))
{
*root=new BTNode();
(*root)->value=number;
(*root)->left=NULL;
(*root)->right=NULL;
Deserialize(&(*root)->left,in);
Deserialize(&(*root)->right,in);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: