3. 木構造の実装
問題
Given the root to a binary tree, implement serialize(root), which serializes the tree into a string, and deserialize(s), which deserializes the string back into the tree.
実装
再帰的に実装します。Noneでなければ展開するようにしています。
class Node(): def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def serialize(node): def visit(val): return val if(node): return [visit(node.val), serialize(node.left), serialize(node.right)] def deserialize(s): if(s): return Node(s[0], deserialize(s[1]), deserialize(s[2])) if __name__ == "__main__": node = Node('root', Node('left', Node('left.left')), Node('right')) print(serialize(node)) assert deserialize(serialize(node)).left.left.val == 'left.left'