Leetcode 449 Solution
This article provides solution to leetcode question 449 (serialize-and-deserialize-bst)
Access this page by simply typing in "lcs 449" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/serialize-and-deserialize-bst
Solution
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Codec:
def serialize(self, root: Optional[TreeNode]) -> str:
"""Encodes a tree to a single string.
"""
tokens = []
def _serialize(node):
if not node:
tokens.append("#")
return
tokens.append(str(node.val))
_serialize(node.left)
_serialize(node.right)
_serialize(root)
return " ".join(tokens)
def deserialize(self, data: str) -> Optional[TreeNode]:
"""Decodes your encoded data to tree.
"""
tokens = data.split(" ")
i = 0
def _deserialize():
nonlocal i
if i == len(tokens) or tokens[i] == "#":
i += 1
return None
node = TreeNode(int(tokens[i]))
i += 1
node.left = _deserialize()
node.right = _deserialize()
return node
return _deserialize()
# Your Codec object will be instantiated and called as such:
# Your Codec object will be instantiated and called as such:
# ser = Codec()
# deser = Codec()
# tree = ser.serialize(root)
# ans = deser.deserialize(tree)
# return ans