diff --git a/build_with_preorder_inorder.py b/build_with_preorder_inorder.py new file mode 100644 index 00000000..3264fd79 --- /dev/null +++ b/build_with_preorder_inorder.py @@ -0,0 +1,37 @@ +# Time Complexity: O(n) +# Space Complexity: O(n) +# Did this code successfully run on Leetcode : Yes + +# 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] + """ + hmap={} + self.rootindex=0 + for i in range(len(inorder)): + hmap[inorder[i]]=i + + def helper(in_st,in_end): + if (in_st>in_end): + return None + + rootval=preorder[self.rootindex] + in_root_idx=hmap[rootval] + root = TreeNode(rootval) + self.rootindex+=1 + root.left = helper(in_st,in_root_idx-1) + root.right = helper(in_root_idx+1,in_end) + + return root + + + return helper(0,len(preorder)-1) \ No newline at end of file diff --git a/validate_bst.py b/validate_bst.py new file mode 100644 index 00000000..b97f0cb9 --- /dev/null +++ b/validate_bst.py @@ -0,0 +1,34 @@ +# Time Complexity: O(n) +# Space Complexity: O(n) +# Did this code successfully run on Leetcode : Yes + +# 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 + """ + + self.flag=True + self.prev= None + + def helper(root): + if root == None: + return + helper(root.left) + if self.prev!=None and root.val<=self.prev.val: + self.flag=False + self.prev=root + helper(root.right) + + + helper(root) + return self.flag + \ No newline at end of file