leetcode_gym/_code/trees/serializeTree2.py

59 lines
1.1 KiB
Python
Raw Normal View History

class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def serialize(root):
if not root:
return "X"
leftRes = serialize(root.left)
rightRes = serialize(root.right)
return str(root.val) + "," + leftRes + "," + rightRes
def deserialize(str):
def dfs(nodesLeftList):
# treat nodesLeft like a queue of incoming nodes to be serialized
char = nodesLeftList.pop(0)
if char=='X':
return None
node = TreeNode(char)
node.left = dfs(nodesLeftList)
node.right = dfs(nodesLeftList)
return node
nodesLeftList = str.split(",")
n = dfs( nodesLeftList ) # this is the actual recursive call
return n
print("Serialize..")
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.right.left = TreeNode(4)
root.right.right = TreeNode(5)
serialized = serialize(root)
print(serialized)
print()
print("Deserialize..")
root2 = deserialize(serialized)
print( root2.val )
print( root2.left.val )
print( root2.right.val )
print( root2.right.left.val )
print( root2.right.right.val )