序列化二叉树

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

示例: 

你可以将以下二叉树:

1
/
2 3
/
4 5

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 解释:关键是以什么来进行序列就用什么来反序列

class Codec:

    def serialize(self, root):
        """Encodes a tree to a single string.
        
        :type root: TreeNode
        :rtype: str
        """
        res=[]
        stack=[root]
        while stack:
            node=stack.pop()
            if node:
                res.append(node.val)
                stack.append(node.right)
                stack.append(node.left)
            else:
                res.append(None)  
        return res

    def deserialize(self, data):
        """Decodes your encoded data to tree.
        :type data: str
        :rtype: TreeNode
        """
        self.index=0
        def dfs(data):
            if data[self.index]==None:
                self.index+=1
                return 
            root=TreeNode(data[self.index])
            self.index+=1
            root.left=dfs(data)
            root.right=dfs(data)
            return root
        return dfs(data)
原文地址:https://www.cnblogs.com/topass123/p/12821946.html