commit 618aeaf7949007df444f6f73de0c0a2c85fcd097
parent 4359a7cf6ee7bd279e92d1a1422660a0456e5053
Author: Andrew Laack <andrew@laack.co>
Date: Fri, 27 Jun 2025 18:24:21 -0500
Completed 2 more problems
Diffstat:
2 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/lowest-common-ancestor-of-a-binary-search-tree/lowest.py b/lowest-common-ancestor-of-a-binary-search-tree/lowest.py
@@ -0,0 +1,27 @@
+# Definition for a binary tree node.
+# class TreeNode:
+# def __init__(self, x):
+# self.val = x
+# self.left = None
+# self.right = None
+
+class Solution:
+ def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
+ if p.val > q.val:
+ temp = p
+ p = q
+ q = temp
+
+ return dfs(root, p, q)
+
+# Assume input of p <= q
+def dfs(current, p, q):
+ assert not current is None
+
+ if p.val <= current.val and q.val >= current.val:
+ return current
+
+ if current.val > p.val:
+ return dfs(current.left, p, q)
+ else:
+ return dfs(current.right, p, q)
diff --git a/same-tree/same-tree.py b/same-tree/same-tree.py
@@ -0,0 +1,31 @@
+# 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 isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
+ right = p
+ left = q
+ return dfs(left,right)
+
+
+def dfs(left, right):
+
+ # base case
+ none = 0
+ if right is None:
+ none += 1
+ if left is None:
+ none += 1
+ if none == 1:
+ return False
+ if none == 2:
+ return True
+
+ left_id = dfs(left.left, right.left)
+ right_id = dfs(left.right, right.right)
+ current_id = left.val == right.val
+
+ return bool(min(left_id, right_id, current_id))