序列化过程很简单,如果是采用先序序列,那么对先序遍历做出改变即可;

层序遍历建立二叉树,如:

1

2        3

4   #     5   6

输入第一行:将要输入的节点的个数N,如上面的为7;

第二行:输入N个节点,

#include <iostream>
#include <string> #include <vector>
#include <queue> using namespace std; struct treeNode{
int val;
treeNode *left;
treeNode *right;
treeNode(){}
treeNode(int x):
val(x),left(NULL),right(NULL){}
}; int s_to_i(string str){
int v=;
unsigned int i=;
while(i<str.size()){
v=v*+str[i]-'';
}
return v;
}
treeNode* buildTree(int N){
if(N==){
return NULL;
} int i=;
int v=;
char c; cin>>c;
if(c=='#') return NULL; v=c-''; queue<treeNode*> q;
treeNode *root=new treeNode(v);
q.push(root); while(i<N&&!q.empty()){
treeNode *node=q.front();
q.pop(); if(i<N){
cin>>c;i++;
if(c!='#'){
v=c-'';
treeNode *lchild=new treeNode(v);
node->left=lchild;
q.push(lchild);
}
}
if(i<N){
cin>>c;i++;
if(c!='#'){
v=c-'';
treeNode *rchild=new treeNode(v);
node->right=rchild;
q.push(rchild);
}
}
}
return root;
}
void serialize(treeNode *root){
if(root==NULL){
cout<<'#'<<endl;return;
}
cout<<root->val<<endl;
if(root->left!=NULL || root->right!=NULL)
serialize(root->left);
if(root->left!=NULL || root->right!=NULL)
serialize(root->right);
}
int main()
{
int N;
cin>>N;
cout << "Build Tree" << endl;
treeNode *root=buildTree(N);
cout << "serialize Tree" <<endl;
serialize(root);
return ;
}

最新文章

  1. 李洪强iOS经典面试题142-第三方框架及其管理
  2. PMP 第十章 项目沟通管理
  3. USBDongle及Btool使用说明
  4. 十七、OGNL表达式
  5. support vector regression与 kernel ridge regression
  6. 关于SWT/JFace的事件模型的四种方式
  7. while if 循环判断
  8. 高效的SQL分页存储过程
  9. android系统reboot
  10. c/cpp中怎样切割字符串,相似于split的功能
  11. [AHOI2001]质数和分解
  12. SAP的 消息 弹出窗口(备忘)
  13. 带新手走进神秘的HTTP协议
  14. 3.1依赖注入「深入浅出ASP.NET Core系列」
  15. Python第八课学习
  16. 使用 dmidecode 查看Linux服务器信息
  17. 零基础http代理http完美代理访问
  18. SQL表两列取一列唯一值的记录
  19. 【062新题】OCP 12c 062出现大量新题-15
  20. windows7 sqlserver2012 无法写入受保护的内存 解决办法

热门文章

  1. Js 将图片的绝对路径转换为base64编码(2)
  2. 8.支撑向量机SVM
  3. verilog 实用的小技巧
  4. 【bzoj2523】【CTSC2001】聪明的学生
  5. hdu3586 Information Disturbing[二分答案+树形DP]
  6. hiho #1066 : 无间道之并查集
  7. RFID-RC522射频
  8. react -搭建服务
  9. QT:QSS完全无效的原因
  10. Java多线程和并发(九),ReentrantLock(公平锁)