297. Serialize and Deserialize Binary Tree

297. Serialize and Deserialize Binary Treearrow-up-right

這一題可以透過 536. Construct Binary Tree from String606. Construct String from Binary Tree 的解答直接回答答,不過上述兩個問題的解法都不是很容易,在面試中要全部寫出來且沒有錯誤其實是有點難的,答案太長了礙於篇幅就暫時略過,直接複製貼上就可以了。

前序遍歷

# 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
        """
        res = []
        def traverse(root):
            if not root:
                res.append('#')
                return
            res.append(str(root.val))
            traverse(root.left)
            traverse(root.right)
        traverse(root)
        return ','.join(res)

    def deserialize(self, data):
        """Decodes your encoded data to tree.

        :type data: str
        :rtype: TreeNode
        """
        if not data: return None
        nodes = deque(data.split(','))
        def traverse(nodes):
            rootVal = nodes.popleft()
            if rootVal == '#': return None
            root = TreeNode(rootVal)
            root.left = traverse(nodes)
            root.right = traverse(nodes)
            return root
        return traverse(nodes)



# Your Codec object will be instantiated and called as such:
# ser = Codec()
# deser = Codec()
# ans = deser.deserialize(ser.serialize(root))

後序遍歷

廣度優先 BFS

Last updated