From 312845c8d6802827c42008b4febcdc9cf16746b6 Mon Sep 17 00:00:00 2001 From: RITIKA CHAUBE Date: Tue, 7 Jul 2026 17:04:52 -0400 Subject: [PATCH] Completed Tree-2 --- Problem1.py | 35 +++++++++++++++++++++++++++++++++++ Problem2.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 Problem1.py create mode 100644 Problem2.py diff --git a/Problem1.py b/Problem1.py new file mode 100644 index 00000000..eba72c28 --- /dev/null +++ b/Problem1.py @@ -0,0 +1,35 @@ +#Problem 106. CONSTRUCT BINARY TREE FROM INORDER AND POSTORDER TRAVERSAL +# TIME COMPELXITY: O(N) where N denotes the number of nodes ie the number of elements in a given array +# SPACE COMPLEXITY: O(N) where N denotes the number of elements that is being recursively being called to make a stack call + + +# Definition for a binary tree node. +# class TreeNode(object): +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution(object): + def buildTree(self, inorder, postorder): + """ + :type inorder: List[int] + :type postorder: List[int] + :rtype: Optional[TreeNode] + """ + self.index=len(postorder)-1 + inordermap={val:i for i,val in enumerate(inorder)} + return self.helper(postorder,0,len(postorder)-1,inordermap) + + def helper(self,postorder,start,end,inordermap): + if start>end: + return None + + root=postorder[self.index] + self.index=self.index-1 + rootIndex=inordermap[root] + + node=TreeNode(root) + node.right=self.helper(postorder,rootIndex+1,end,inordermap) + node.left=self.helper(postorder,start,rootIndex-1,inordermap) + + return node \ No newline at end of file diff --git a/Problem2.py b/Problem2.py new file mode 100644 index 00000000..eaf8022a --- /dev/null +++ b/Problem2.py @@ -0,0 +1,36 @@ +#Problem 129. SUM ROOT TO LEAF NUMBERS +# TIME COMPELXITY: O(N) where N denotes the number of nodes in a given tree +# SPACE COMPLEXITY: O(H) where H denotes the height of the given tree as we are making a recursive stack call here + + +# Definition for a binary tree node. +# class TreeNode(object): +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution(object): + def sumNumbers(self, root): + """ + :type root: Optional[TreeNode] + :rtype: int + """ + #fullAns=0 + return self.helper(root,0) + + def helper(self,root,current): + #base + if root is None: + return 0 + + #logic + current=10*current+root.val + + if root.left is None and root.right is None: + return current + + left=self.helper(root.left,current) + right=self.helper(root.right,current) + #finalAns=left+right + return left+right +