题目:序列化二叉树

请实现两个函数,分别用来序列化和反序列化二叉树。

示例: 

你可以将以下二叉树:

1
   / \
  2   3
     / \
    4   5

序列化为 "[1,2,3,null,null,4,5]"


解题:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Codec {
private:// 1,2,#,#,3,-4,#,#,5,#,#,void encode(TreeNode* root, string& res) {if (!root) {res += "#,";return;}res += to_string(root->val) + ",";encode(root->left, res);encode(root->right, res);}TreeNode* decode(int& p, const string& data) {if (data[p] == '#') {p += 2;return NULL;}bool isN = false;if (data[p] == '-') {  // 负数的情况isN = true;p++;}int num = 0;  // 还原成整数while (data[p] != ',') {num = num * 10 + data[p] - '0';p++;}p++;if (isN) num = -num;auto root = new TreeNode(num);root->left = decode(p, data);root->right = decode(p, data);return root;}public:// Encodes a tree to a single string.string serialize(TreeNode* root) {string res = "";encode(root, res);return res;}// Decodes your encoded data to tree.TreeNode* deserialize(string data) {int p = 0;return decode(p, data);}
};

剑指offer:面试题37. 序列化二叉树相关推荐

  1. 剑指offer——面试题58:二叉树的下一个结点

    剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...

  2. 剑指offer——面试题39:二叉树的深度

    剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...

  3. 剑指offer——面试题37:两个链表的第一个公共结点

    剑指offer--面试题37:两个链表的第一个公共结点 20180906整理 Solution1: 时间复杂度为O(n2)O(n2)O(n^2)的垃圾算法 /* struct ListNode {in ...

  4. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  5. 【递归】剑指offer——面试题19:二叉树的镜像

    剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...

  6. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...

  7. [剑指offer]面试题37:两个链表的第一个公共结点

    面试题37:两个链表的第一个公共结点 题目:输入两个链表,找出它们的第一个公共结点.链表结点定义如下: struct ListNode {int val;ListNode *next;ListNode ...

  8. [剑指offer]面试题19:二叉树的镜像

    面试题19:二叉树的镜像 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像. 二叉树结点的定义如下: struct BinaryTreeNode {int value;BinaryTreeNo ...

  9. 剑指offer(61)序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 题目分析 首先拿到题目时候,我先想到的是什么是序列化二叉树?序列化主要就是在前后端交互时候需要转换下,毕竟网络传输的是流式数据(二进制或者文本 ...

  10. 剑指offer六十一之序列化二叉树(待补充)

    一.题目 请实现两个函数,分别用来序列化和反序列化二叉树 二.思路 三.代码 --------------------------------------------- 参考链接: 转载于:https ...

最新文章

  1. spring实例教程
  2. Oracle day05 索引_数据去重
  3. ISelectionSet接口
  4. 【vue】ios中从详情页中返回到列表页出现空白的问题
  5. 打造“新基建”核心支柱 数据中心产业期待提速提质
  6. 小区物业费信息管理系统设计c++_律师,我没有签物业合同,可以不交物业费吗?...
  7. 主成分分析计算机如何实现,主成分分析(PCA)原理及R语言实现及分析实例
  8. Kubernetes 无法删除pod实例的排查过程
  9. [剑指offer]面试题第[7]题[JAVA][斐波那契数列][递归]
  10. docker选择安装位置_自定义WSL的安装位置,别再装到C盘啦
  11. (九)模型驱动和属性驱动
  12. 使用Maven 创建web3.0项目
  13. ole object interface 能获取图片吗_常见的闲鱼辅助软件有哪些,你知道吗
  14. 6天通吃树结构—— 第一天 二叉查找树
  15. [Erlang脚印 0004] gen_server
  16. 卖两本windows phone的书
  17. JDBC中数据库连接池的使用与传统方式的比较
  18. 微电子专业要学c语言吗,微电子技术专业学什么?
  19. 洞察Tungsten Fabric内部的XMPP
  20. 微信内置浏览器中如何实现点击电话号码自动到拨号页面?

热门文章

  1. How to Use tomcat on Linux
  2. Magent搭建Memcached集群
  3. Caused by: java.sql.BatchUpdateException
  4. LeetCode: Longest Consecutive Sequence
  5. 谷歌Chrome浏览器发布
  6. 《OpenCV3编程入门》学习笔记10 角点检测(二)Shi-Tomasi角点检测
  7. 《OpenCV3编程入门》学习笔记4 OpenCV数据结构与基本绘图
  8. linux禅道8.1安装教程,Ubuntu 18.4安装禅道9.8.3 linux 64位一键版本
  9. php psr2规范,PhpStorm集成PSR2代码自动检查 | 吴文辉博客
  10. 修改windows cmd f2快捷_第三课——win10常用快捷键的使用