美文网首页
序列化二叉树

序列化二叉树

作者: Max_7 | 来源:发表于2019-03-06 10:57 被阅读0次

题目描述

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

思路

二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为None的时候输出一个特殊字符”#”。对于反序列化,就是针对输入的一个序列构建一棵二叉树,我们可以设置一个指针先指向序列的最开始,然后把指针指向位置的数字转化为二叉树的结点,后移一个数字,继续转化为左子树和右子树。
序列化:比较简单,直接用递归的办法前序遍历二叉树,其中碰到空就加个#。
反序列化:这里也是在别人的GitHub上借鉴的灵感。这里引入了一个全局的变量flag,通过flag来控制序列化后的索引。这样在递归的时候可以一直把序列化结果S不加改变的放入递归函数中。递归结束的出口是当判断到#的时候,这说明到达了底部,需要返回上一级。依次递归的构建二叉树。

代码

class Solution:
    flag = -1
    def Serialize(self, root):
        # write code here
        if root == None:
            return '#'
        return str(root.val)+','+self.Serialize(root.left)+','+self.Serialize(root.right)
    def Deserialize(self, s):
        self.flag += 1
        l = s.split(',') #这里的l每次都是一样的,可以看成全局的。
        # flag每次加1,从0开始,不能超过字符串长度,否则返回None
        if self.flag >= len(s):
            return None
        root = None
        # 新建一个树对象来反序列化字符串
        if l[self.flag] != '#':
            # 往树中存值,递归输入s没问题,因为l[self.flag]是不断往后取值的
            root = TreeNode(int(l[self.flag]))
            root.left = self.Deserialize(s) #先构建左子树,发现#时回溯到上一层,开始构建右子树,也就是下一行代码。
            root.right = self.Deserialize(s)
        return root

相关文章

  • 剑指offer刷题记录(C++版本)(之七)

    61.序列化二叉树??? 题目:请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按...

  • JZ-061-序列化二叉树

    序列化二叉树 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树。二叉树的序列化是指:把一棵二叉树按照某种遍...

  • 二叉树的三种遍历方法

    二叉树的序列化 为了方便构造二叉树来验证我们的算法,这里先介绍下二叉树的序列化和反序列化。 序列化 先序遍历整颗二...

  • LeetCode:序列化二叉树

    面试题37. 序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树。示例:你可以将以下二叉树: 序列化为 ...

  • 二叉树序列化和反序列化

    二叉树序列化和反序列化 前序 序列化和反序列化

  • 序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 思路 二叉树的序列化就是采用前序遍历二叉树输出节点,再碰...

  • 面试题37:序列化二叉树

    题目 实现两个函数,分别用来序列化和反序列化二叉树 解题思路 序列化根据前序遍历的顺序序列化二叉树,从根节点开始,...

  • 剑指Offer-61 二叉树序列化

    请实现两个函数,分别用来序列化和反序列化二叉树 利用广度遍历实现二叉树的序列化和非序列化。核心思想:广度遍历

  • 剑指Offer Java版 面试题37:序列化二叉树

    题目:请实现两个函数,分别用来序列化和反序列化二叉树。可以根据前序遍历的顺序来序列化二叉树。在遍历二叉树碰到nul...

  • 37:序列化二叉树

    题目37:序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件...

网友评论

      本文标题:序列化二叉树

      本文链接:https://www.haomeiwen.com/subject/qsazuqtx.html