数据结构与算法

二叉树的序列化和反序列化

2019-12-16  本文已影响0人  而立之年的技术控
微信图片_20191216164010.jpg
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) + '$' + self.Serialize(root.left) + '$' + self.Serialize(root.right)

    def des(self, data):
        list = data.split('$')
        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)
上一篇 下一篇

猜你喜欢

热点阅读