# 257. Binary Tree Paths

Apr 15, 2022

--

Check out the problem description here.

`class Solution:    def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:        res=[]        ds=[]                self.rec(root,res,ds)        for i in range(len(res)):            res[i] = "->".join(res[i])        return(res)                   def rec(self,root,res,ds):        if root ==None:            return        ds.append(str(root.val))                if root.left ==None and root.right==None:            res.append(ds.copy())            ds.pop(-1)            return        self.rec(root.left,res,ds)        self.rec(root.right,res,ds)        ds.pop(-1)`

The above code in a much more neat code is given below

`class Solution:    def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:        res=[]        if root:            self.rec(root,"",res)        return res        def rec(self,root,path,res):        if root == None :            return        path+=str(root.val)                if root.right==None and root.left ==None:            res.append(path)            return                self.rec(root.left,path+"->",res)              self.rec(root.right,path+"->",res)`

Both solution takes the same time and complexity

TIME :O(n) n= number of nodes

SPACE :O(h) h = height of the tree