class Codec:
    def serialize(self, root):
        res = []
        
        def dfs(node):
            if not node:
                res.append("N")
                return
            res.append(str(node.val))
            dfs(node.left)
            dfs(node.right)
            
        dfs(root)    
        ans = ",".join(res)
        return ans
            
 
    def deserialize(self, data):
        self.i = 0
        data = data.split(',')
        
        def dfs():
            if data[self.i] == "N":
                self.i += 1
                return None
            else:
                node = TreeNode(int(data[self.i]))
                self.i += 1
                node.left = dfs()
                node.right = dfs()
                return node
                
        return dfs()