From 91cf31d51a189a2e6ae6a16dba81605770be7dff Mon Sep 17 00:00:00 2001 From: pratikb0501 Date: Sat, 2 May 2026 12:14:21 -0700 Subject: [PATCH] Completed Trees-1 --- Problem_1.py | 26 ++++++++++++++++++++++++++ Problem_2.py | 24 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 Problem_1.py create mode 100644 Problem_2.py 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