Skip to content

LC 0297 [H] Serialize and Deserialize Binary Tree

Code with Senpai edited this page Nov 8, 2020 · 7 revisions
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Codec:

    def serialize(self, root):
        """Encodes a tree to a single string.
        
        :type root: TreeNode
        :rtype: str
        """
        def preorder(node):
            if not node:
                vals.append('#')
                return
            vals.append(str(node.val))
            preorder(node.left)
            preorder(node.right)
        vals = []
        preorder(root)
        return ' '.join(vals)

    def deserialize(self, data):
        """Decodes your encoded data to tree.
        
        :type data: str
        :rtype: TreeNode
        """
        def preorder():
            val = Q.popleft()
            if val == '#': return None
            node = TreeNode(int(val))
            node.left = preorder()
            node.right = preorder()
            return node
        Q = deque(data.split())
        return preorder()
        

# Your Codec object will be instantiated and called as such:
# codec = Codec()
# codec.deserialize(codec.serialize(root))
Clone this wiki locally