题解 | 序列化二叉树

# -*- 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)

全部评论

相关推荐

02-10 10:32
市政建设
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务