题解 | #序列化二叉树#

序列化二叉树

http://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84

首先需要序列化,然后再反序列化
序列化利用字符分解,添加‘,’地方式分割,然后一次添加二叉树的左节点和右节点
之后反序列化:
利用前面的,分割,直接生成一个列表‘list = s.split(',')’
调用生成二叉树函数:

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 Deserialize(self, s)://反序列化
        # write code here
        list = s.split(',')//利用split和逗号分隔,并放入列表中
        return self.DeserializeTree(list)//直接返回列表的反序列化值
    def DeserializeTree(self, list)://建立反序列二叉树的函数
        if len(list) <= 0:
            return None
        val = list.pop(0)//这里关键,将列表的值挨个减掉,并复制给val,自己调用自己
        root = None
        if val != '#'://如果不是空节点,
            root = TreeNode(int(val))//节点就是二叉树的值,直接调用了Treenode
            root.left = self.DeserializeTree(list)//左节点
            root.right = self.DeserializeTree(list)//右节点
        return root
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务