# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
import json
class Solution:
def build_ser(self, root, dc, idx):
if root:
dc[idx] = root.val
else:
return
self.build_ser(root.left, dc, idx * 2 + 1)
self.build_ser(root.right, dc, idx * 2 + 2)
def Serialize(self, root):
dc = {}
self.build_ser(root, dc, 0)
return json.dumps(dc)
def build_tree(self, dc, idx):
ret = None
if str(idx) in list(dc.keys()):
ret = TreeNode(dc[str(idx)])
else:
return ret
ret.left = self.build_tree(dc, idx * 2 + 1)
ret.right = self.build_tree(dc, idx * 2 + 2)
return ret
def Deserialize(self, s):
dc = json.loads(s)
return self.build_tree(dc, 0)