二叉树序列化:

本质通过遍历树完成对其值的编码(这里通过先序遍历)

如下图(来源:官方题解)

方法:先序遍历这颗二叉树,遇到空子树的时候序列化成 None,否则继续递归序列化

代码:

void rserialize(TreeNode *root,string &str)
{if(root==NULL){str+="None,";}
else
{str+=to_string(root->val)+",";rserialize(root->left,str);rserialize(root->right,str);
}}

二叉树的反序列化

//根据链表建树TreeNode* rdeserialize(list<string>& dataArray) {if (dataArray.front() == "None") {dataArray.erase(dataArray.begin());return nullptr;}//如果链表为空,则返回空树TreeNode* root = new TreeNode(stoi(dataArray.front()));dataArray.erase(dataArray.begin());//根节点root->left = rdeserialize(dataArray);//左子树root->right = rdeserialize(dataArray);//右子树return root;}//反序列化TreeNode* deserialize(string data) {list<string> dataArray;string str;
//把二叉树节点序列化的值加入链表for (auto& ch : data) {if (ch == ',') {dataArray.push_back(str);str.clear();} else {str.push_back(ch);}}if (!str.empty()) {dataArray.push_back(str);str.clear();}return rdeserialize(dataArray);}来源:力扣(LeetCode)

算法笔记:二叉树的序列化和反序列化(剑指 Offer 37)相关推荐

  1. 数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡二叉树

    数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡而二叉树 目录 二叉树的序列化和反序列化 判断一棵树是否为平衡而二叉树 1. 二叉树的序列化和反序列化 1. 递归版本序列化和反序列化 代 ...

  2. 【LeetCode】剑指 Offer 37. 序列化二叉树

    [LeetCode]剑指 Offer 37. 序列化二叉树 文章目录 [LeetCode]剑指 Offer 37. 序列化二叉树 package offer;import java.util.Link ...

  3. 剑指 Offer 37. 序列化二叉树

    题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据. 请设计一个算法来实 ...

  4. Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer

    剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...

  5. 【LeetCode笔记】剑指Offer 37. 序列化二叉树(Java、二叉树、序列化、BFS、队列)

    文章目录 题目描述 思路 && 代码 二刷 题目描述 这道题涉及到不少 String.StringBuilder.Integer的转换.处理. 思路 && 代码 序列化 ...

  6. 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...

    为了进入大厂,我想很多人都会去牛客.知乎.CSDN等平台去查看面经,了解各个大厂在问技术问题的时候都会问些什么样的问题. 在看了几十上百篇面经之后,我将算法工程师的各种类型最常问到的问题都整理了出来, ...

  7. LeetCode Java刷题笔记—297. 二叉树的序列化与反序列化

    297. 二叉树的序列化与反序列化 请实现两个函数,分别用来序列化和反序列化二叉树.这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化 ...

  8. 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  9. 《剑指 Offer I》刷题笔记 11 ~ 19 题

    <剑指 Offer I>刷题笔记 11 ~ 19 题 查找算法(中等) 11. 二维数组中的查找 _解法 1:暴力迭代 解法 2:标志数 解法 3:逐行二分 12. 旋转数组的最小数字 _ ...

最新文章

  1. 测试数值计算程序要注意的问题
  2. centos php5.3 yum 安装 php53-mcrypt
  3. Graph Embedding方案之DeepWalk
  4. Photoshop扣除特定颜色背景
  5. 美女学霸直博中科院,本科武大王者全国16强,妥妥现实版“爽文女主”!
  6. c语言数据类型、运算符和表达式
  7. viewflipper_Android ViewFlipper示例教程
  8. 9.XSD 复合类型指示器
  9. truffle和remix区别
  10. 使用软件实现直播推流
  11. android平板8英寸,8英寸安卓系统 Newpad P10平板电脑评测
  12. 重复独立事件,伯努利概型 (概统1)
  13. 使用React Native可以开发Window桌面应用了!
  14. 香港风景线 Byond 1993年采访
  15. 聚焦云+人工智能,纳德拉宣布微软重大重组
  16. PAT : 基础编程题目集_函数题答案(6-1 ~ 6-13)(C语言)
  17. 管理需因人而异,因时而变
  18. 详解活动图计算关键路径、最早开始时间、最晚开始时间、冗余时间,C++ 程序实现
  19. 互联网下半场,为什么公司和个人都追捧“增长黑客”?
  20. (Java)对象克隆技术

热门文章

  1. 慎用javascript:void(0) 【转】
  2. Windows mobile 下读取手机SIM卡信息
  3. HDU2571 命运【动态规划DP】
  4. UVA10929 You can say 11【大数模除】
  5. AOJ0008 Sum of 4 Integers【暴力】
  6. HDU1210 Eddy's 洗牌问题【递推函数+模拟】
  7. Java —— 正则表达式
  8. 集成电路的设计 —— 引脚
  9. 产生一定范围随机数的通用表达式
  10. C++基础::Stream