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

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

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 ;
}

【剑指offer37】二叉树的序列化的更多相关文章

  1. 剑指Offer37 二叉树深度与平衡二叉树判断

    /************************************************************************* > File Name: 37_TreeDe ...

  2. 剑指Offer-37.二叉树的深度(C++/Java)

    题目: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 分析: 递归求解左右子树的最大值即可,每遍历到一个结点,深度加1,最后 ...

  3. 剑指Offer——二叉树

    剑指Offer--二叉树 前言 数据结构通常是编程面试中考察的重点.在参加面试之前,应聘者需要熟练掌握链表.树.栈.队列和哈希表等数据结构,以及它们的操作.本片博文主要讲解二叉树操作的相关知识,主要包 ...

  4. JS数据结构与算法 - 剑指offer二叉树算法题汇总

    ❗❗ 必看经验 在博主刷题期间,基本上是碰到一道二叉树就不会碰到一道就不会,有时候一个下午都在搞一道题,看别人解题思路就算能看懂,自己写就呵呵了.一气之下不刷了,改而先去把二叉树的基础算法给搞搞懂,然 ...

  5. 剑指offer 二叉树中和为某一个值的路径

    剑指offer 牛客网 二叉树中和为某一个值的路径 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 15:53:58 2 ...

  6. 剑指offer 二叉树的层序遍历

    剑指offer 牛客网 二叉树的层序遍历 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 09:33:16 2019 @ ...

  7. 剑指offer从上往下打印二叉树 、leetcode102. Binary Tree Level Order Traversal(即剑指把二叉树打印成多行、层序打印)、107. Binary Tree Level Order Traversal II 、103. Binary Tree Zigzag Level Order Traversal(剑指之字型打印)

    从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode ...

  8. 剑指offer-08 二叉树的下一个节点

    剑指offer第8题,本来想找leetcode上对应的题,后来没找到,直接去牛客网上刷了. 题目描述: 给定一个二叉树和其中的一个结点(pNode),请找出中序遍历顺序的下一个结点并且返回.注意,树中 ...

  9. 《剑指offer》:[62]序列化二叉树

    题目:请实现两个函数,分别来序列化和反序列化二叉树. 方案分析:我们知道通过二叉树的中序和任何一个前或者后续遍历都可以反序列化一棵二叉树,但是这样做有一个缺点就是,序列化的数据不能有重复的数据,否则会 ...

随机推荐

  1. java网络编程+通讯协议的理解

    参考: http://blog.csdn.net/sunyc1990/article/details/50773014 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很 ...

  2. 爬虫框架Scrapy 的使用

    一.官网链接 https://docs.scrapy.org/en/latest/topics/architecture.html 二.Scrapy 需要安装的包 #Windows平台 # pip3 ...

  3. 13、Nginx七层负载均衡

    1.Nginx负载均衡基本概述 1.1为什么需要使用负载均衡 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡, ...

  4. deep_learning_Function_tensorflow_transpose()

    tf.transpose()的用法 一.tensorflow官方文档内容 transpose(     a,     perm=None,     name='transpose' ) Defined ...

  5. HAproxy企业应用,TCP/HTTP动静分离

    HAProxy的是一个免费的.开源的的tcp/http反向代理工具.负载均衡器,是一个企业非常快速和可靠的安全的解决方案,提供高可用性.高并发性,负载均衡和代理对TCP和基于HTTP的应用程序.它特别 ...

  6. Java语言基础(3)

    1 算术运算符:+,-,*(乘法),/(除法),%(求余数) 1)只有相同类型的数据才可以进行算术运算,经常使用到自动类型转换和强制类型转换,把参与运算的数据转换为同一个类型,然后再进行算术运算. 案 ...

  7. js判断网页标题包含某字符串则替换

    js判断网页标题包含某字符串则替换,代码如下: var tit=document.title; if(tit.indexOf("afish")>0){ tit=tit.rep ...

  8. BZOJ1791 基环树直径

    非递归版4S /************************************************************** Problem: 1791 User: 18357 Lan ...

  9. (转载)搜索引擎的Query自动纠错技术和架构详解

    from http://www.52nlp.cn/%E8%BE%BE%E8%A7%82%E6%95%B0%E6%8D%AE%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E7 ...

  10. 图片url 设置大小

    假设有一个图片url为:http://localhost/PictureUrl/ImgURL.aspx?PicUrl=.//testImg\test.jpg (文件夹testImg下有个文件test. ...