面试题69:序列化二叉树
来源:互联网 发布:java jdk1.7 32位下载 编辑:程序博客网 时间:2024/05/12 06:38
题目:
请实现两个函数,分别用来序列化和反序列化二叉树。
思路:
序列化是指将一个二叉树保存到文件中,反序列化是指从文件中读取二叉树结点值重构二叉树。
我们采用先序遍历将二叉树的值保存到文件中,为了保证重构二叉树时结点能被插到正确的位置,我们将NULL结点也存下来,用'#'表示。
#include <iostream> #include <vector> #include <stack>using namespace std;struct Node{int val;Node *left;Node *right;Node(int _val) :val(_val), left(NULL), right(NULL){}};void Serialize(Node *root,ostream &out){if (root == NULL){out << "#, ";return;}out << root->val << ", ";Serialize(root->left, out);Serialize(root->right, out);}void Deserialize(Node **root, istream &in){int num;in >> num;if (num != 0) //从屏幕读输入,用0表示空{*root = new Node(num);Deserialize(&(*root)->left, in);Deserialize(&(*root)->right, in);}}int main(){Node *n1 = new Node(1);Node *n2 = new Node(2);Node *n3 = new Node(3);Node *n4 = new Node(4);Node *n5 = new Node(5);Node *n6 = new Node(6);Node *n7 = new Node(7);Node *n8 = new Node(8);n1->left = n2;n1->right = n3;n2->left = n4;n2->right = n5;n3->left = n6;n3->right = n7;n7->right = n8;Serialize(n1,cout);cout << endl;Node *nn1;Deserialize(&nn1, cin);Serialize(nn1, cout);cout << endl;return 0;}
0 0
- 面试题69:序列化二叉树
- 面试题62:序列化二叉树
- 面试题59:二叉树序列化
- 面试题62:序列化二叉树
- 面试题62. 序列化二叉树
- 面试题62:序列化二叉树
- 【剑指Offer学习】【面试题62:序列化二叉树】
- 剑指offer-面试题62:序列化二叉树
- 《剑指offer》面试题62 序列化二叉树
- 剑指offer--面试题62:序列化二叉树
- 剑指Offer面试题62:序列化二叉树
- 剑指offer-面试题62-序列化二叉树
- 【剑指Offer】面试题62:序列化二叉树
- 【剑指offer】面试题37:序列化二叉树
- java面试题(剑指offer):序列化二叉树
- 面试题-前序中序序列重建二叉树
- 面试题24:二叉树的后序遍历序列
- 面试题24:二叉搜索树的后续遍历序列
- Ubuntu SecureCRT 破解
- 虚拟机VMWare安装RHEL 7.0以及安装配置LAMP环境(Apache+PHP+MariaDB)
- Android基础--View的生命周期
- 【Android】获取一个uri的资源的真实路径
- qwe
- 面试题69:序列化二叉树
- 算法:选择排序
- Mybatis 控制台输出sql信息
- IOS学习之——使用UIWebView打开其他常见文件
- 第4周项目5-用递归方法求解(3)
- string 示例程序失败
- 菜鸟学习之javaweb 乱码的解决
- STL的remove函数和list的remove成员函数
- nyoj42一笔画问题