diff --git a/Problem_1.py b/Problem_1.py new file mode 100644 index 00000000..8d86e562 --- /dev/null +++ b/Problem_1.py @@ -0,0 +1,26 @@ +# Definition for a binary tree node. +import math + + +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + +class Solution: + def isValidBST(self, root): + self.result = True + self.helper(root, -math.inf, math.inf) + return self.result + + def helper(self, root, min_range, max_range): + if not root: + return + if not min_range < root.val < max_range: + self.result = False + return + self.helper(root.left, min_range, root.val) + self.helper(root.right, root.val, max_range) + + diff --git a/Problem_2.py b/Problem_2.py new file mode 100644 index 00000000..1c32f491 --- /dev/null +++ b/Problem_2.py @@ -0,0 +1,24 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def buildTree(self, preorder, inorder): + self.index = 0 + self.inorder_map = {} + for i in range(len(inorder)): + ele = inorder[i] + self.inorder_map[ele] = i + return self.helper(preorder, 0, len(inorder) - 1) + + def helper(self, preorder, start, end): + if start > end: + return None + root = TreeNode(preorder[self.index]) + idx = self.inorder_map[root.val] + self.index += 1 + root.left = self.helper(preorder, start, idx - 1) + root.right = self.helper(preorder, idx + 1, end) + return root