2019-08-24 LeetCode297. ツリーのシーケンス化と逆シーケンス化

1101 ワード

13 min、一回合格して、デバッグしていません
class Codec:

    def serialize(self, root:TreeNode):
        """Encodes a tree to a single string.

        :type root: TreeNode
        :rtype: str
        """
        res=[]
        self.dfs(root,res)
        return ','.join(res)
    
    def dfs(self,root:TreeNode,res:List):
        if not root:res.append('#')
        else:
            res.append(str(root.val))
            self.dfs(root.left,res)
            self.dfs(root.right,res)
        

    def deserialize(self, data:str):
        """Decodes your encoded data to tree.

        :type data: str
        :rtype: TreeNode
        """
        if not data:return None
        res=data.split(',')
        return self.dfs_de(res)
        
    def dfs_de(self,res):
        if res[0]=='#':
            res.pop(0)
            return None
        else:
            root=TreeNode(int(res[0]))
            res.pop(0)
            root.left=self.dfs_de(res)
            root.right=self.dfs_de(res)
            return root