Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.71 KB | None | 0 0
  1. # Definition for a binary tree node.
  2. # class TreeNode(object):
  3. #     def __init__(self, x):
  4. #         self.val = x
  5. #         self.left = None
  6. #         self.right = None
  7.  
  8. class Codec:
  9.  
  10.     def serialize(self, root):
  11.         """Encodes a tree to a single string.
  12.        
  13.        :type root: TreeNode
  14.        :rtype: str
  15.        """
  16.         if not root:
  17.             return None
  18.         arr = []
  19.         queue = collections.deque([root])
  20.         while queue:
  21.             length = len(queue)
  22.             for _ in range(length):
  23.                 popped = queue.popleft()
  24.                 if popped:
  25.                     arr.append(str(popped.val))
  26.                     queue.append(popped.left)
  27.                     queue.append(popped.right)
  28.                 else:
  29.                     arr.append("null")
  30.         return ",".join(arr)
  31.                
  32.        
  33.  
  34.     def deserialize(self, data):
  35.         """Decodes your encoded data to tree.
  36.        
  37.        :type data: str
  38.        :rtype: TreeNode
  39.        """
  40.         if not data:
  41.             return None
  42.         arr = data.split(",")
  43.         root = TreeNode(int(arr[0]))
  44.         queue = collections.deque([root])
  45.         i = 1
  46.         while queue:
  47.             popped = queue.popleft()
  48.             if arr[i] != 'null':
  49.                 popped.left = TreeNode(int(arr[i]))
  50.                 queue.append(popped.left)
  51.             i += 1
  52.             if arr[i] != 'null':
  53.                 popped.right = TreeNode(int(arr[i]))
  54.                 queue.append(popped.right)
  55.             i += 1
  56.         return root
  57.            
  58.        
  59.        
  60.  
  61. # Your Codec object will be instantiated and called as such:
  62. # codec = Codec()
  63. # codec.deserialize(codec.serialize(root))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement