diff --git a/Problem1.py b/Problem1.py new file mode 100644 index 00000000..16fdb282 --- /dev/null +++ b/Problem1.py @@ -0,0 +1,31 @@ +#Problem 98. VALIDATE BINARY SEARCH TREE +# TIME COMPELXITY: O (N) where N is the number of nodes +# SPACE COMPLEXITY: O(H) where H is the height of the tree + + +# 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 isValidBST(self, root): + """ + :type root: Optional[TreeNode] + :rtype: bool + """ + + return self.helper(root,None,None) + + def helper(self,root,minValue,maxValue): + if root is None: + return True + + if minValue is not None and root.val<=minValue: + return False + + if maxValue is not None and root.val>=maxValue: + return False + + return self.helper(root.left,minValue,root.val) and self.helper(root.right,root.val,maxValue) \ No newline at end of file diff --git a/Problem2.py b/Problem2.py new file mode 100644 index 00000000..40166e87 --- /dev/null +++ b/Problem2.py @@ -0,0 +1,34 @@ +#Problem 105. CONSTRUCT BINARY TREE FROM PREORDER AND INORDER TRAVERSAL +# TIME COMPELXITY: O (N) where N is the number of nodes +# SPACE COMPLEXITY: O (N) where N is the number of nodes + + +# 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, preorder, inorder): + """ + :type preorder: List[int] + :type inorder: List[int] + :rtype: Optional[TreeNode] + """ + self.index=0 + inordermap={val:i for i,val in enumerate(inorder)} + return self.helper(preorder,0,len(inorder)-1,inordermap) + + def helper(self,preorder,start,end,inordermap): + if start>end: + return None + root_val=preorder[self.index] + self.index+=1 + root=TreeNode(root_val) + + root_idx=inordermap[root_val] + root.left=self.helper(preorder,start,root_idx-1,inordermap) + root.right=self.helper(preorder,root_idx+1,end,inordermap) + + return root \ No newline at end of file