优秀的编程知识分享平台

网站首页 > 技术文章 正文

二叉树的序列化和反序列化(二叉树的序列化和反序列化Java)

nanyue 2024-09-09 04:52:39 技术文章 6 ℃
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Solution:
    def Serialize(self, root):
        # write code here
        if not root:
            return '#'
        return str(root.val) + '#39; + self.Serialize(root.left) + '#39; + self.Serialize(root.right)

    def des(self, data):
        list = data.split('#39;)
        return self.desTree(list)

    def desTree(self, list):
        if len(list) <= 0:
            return None
        val = list.pop(0)
        root = None
        if val != '#':
            root = TreeNode(int(val))
            root.left = self.desTree(list)
            root.right = self.desTree(list)
        return root

if __name__ == '__main__':
    node1 = TreeNode(5)
    node2 = TreeNode(3)
    node3 = TreeNode(2)
    node4 = TreeNode(4)
    node5 = TreeNode(7)
    node6 = TreeNode(6)
    node7 = TreeNode(8)
    node1.left = node2
    node1.right = node5
    node2.left = node3
    node2.right = node4
    node5.left = node6
    node5.right = node7

    s = Solution()
    ret = s.Serialize(node1)

Tags:

最近发表
标签列表