zoukankan      html  css  js  c++  java
  • 【LeetCode每日一题】2020.6.16 297. 二叉树的序列化与反序列化

    297. 二叉树的序列化与反序列化

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

    请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。

    示例:

    你可以将以下二叉树:
    1
    /
    2 3
    /
    4 5

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

    分析:

    二叉树的DFS后序遍历。

    代码(Python):

    from collections import deque
    
    
    # Definition for a binary tree node.
    class TreeNode:
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    
    class Codec:
    
        def serialize(self, root: TreeNode):
            if not root:
                return "[]"
            queue = deque()
            queue.append(root)
            res = []
            while queue:
                node = queue.popleft()
                if not node:
                    res.append('null')
                else:
                    res.append(str(node.val))
                    queue.append(node.left)
                    queue.append(node.right)
            return '[' + ','.join(res) + ']'
    
        def deserialize(self, data: str):
            if data == "[]":
                return None
            # 分解为一个个结点值
            serial = data[1:-1].split(',')
            root = TreeNode(int(serial[0]))
            i = 1
            queue = deque()
            queue.append(root)
            while queue:
                node = queue.popleft()
                if serial[i] != "null":
                    node.left = TreeNode(int(serial[i]))
                    queue.append(node.left)
                i += 1
                if serial[i] != "null":
                    node.right = TreeNode(int(serial[i]))
                    queue.append(node.right)
                i += 1
            return root
    
    
  • 相关阅读:
    PDA固定资产条码管理系统软件-解决固定资产实物清查的瓶颈问题,大大提高清查效率
    互联网+下PDA移动智能手持POS超市收银开单软件
    搭建免费代理池
    解析库beautifulsoup
    爬取汽车之家新闻
    请求库之requests库
    网络状态码301与302
    正向代理与反向代理
    垃圾回收机制详解
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/enmac/p/13149814.html
Copyright © 2011-2022 走看看