leetcode

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 618aeaf7949007df444f6f73de0c0a2c85fcd097
parent 4359a7cf6ee7bd279e92d1a1422660a0456e5053
Author: Andrew Laack <andrew@laack.co>
Date:   Fri, 27 Jun 2025 18:24:21 -0500

Completed 2 more problems

Diffstat:
Alowest-common-ancestor-of-a-binary-search-tree/lowest.py | 27+++++++++++++++++++++++++++
Asame-tree/same-tree.py | 31+++++++++++++++++++++++++++++++
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))