Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 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
- """
- if not root:
- return None
- arr = []
- queue = collections.deque([root])
- while queue:
- length = len(queue)
- for _ in range(length):
- popped = queue.popleft()
- if popped:
- arr.append(str(popped.val))
- queue.append(popped.left)
- queue.append(popped.right)
- else:
- arr.append("null")
- return ",".join(arr)
- def deserialize(self, data):
- """Decodes your encoded data to tree.
- :type data: str
- :rtype: TreeNode
- """
- if not data:
- return None
- arr = data.split(",")
- root = TreeNode(int(arr[0]))
- queue = collections.deque([root])
- i = 1
- while queue:
- popped = queue.popleft()
- if arr[i] != 'null':
- popped.left = TreeNode(int(arr[i]))
- queue.append(popped.left)
- i += 1
- if arr[i] != 'null':
- popped.right = TreeNode(int(arr[i]))
- queue.append(popped.right)
- i += 1
- return root
- # Your Codec object will be instantiated and called as such:
- # codec = Codec()
- # codec.deserialize(codec.serialize(root))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement