From 06af8d97baef346235dbb68f7c96018f1593c372 Mon Sep 17 00:00:00 2001 From: joshr Date: Sat, 4 Oct 2025 12:35:25 -0700 Subject: [PATCH] completed --- binarytreelevelordertraversal.py | 30 ++++++++++++++++++++++++ courseschedule.py | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 binarytreelevelordertraversal.py create mode 100644 courseschedule.py diff --git a/binarytreelevelordertraversal.py b/binarytreelevelordertraversal.py new file mode 100644 index 00000000..afb2c0a8 --- /dev/null +++ b/binarytreelevelordertraversal.py @@ -0,0 +1,30 @@ +# 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 + + +# Time Complexity: O(n) +# Space Complexity: O(h) +class Solution: + def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: + if not root: + return [] + + self.result = [] + + def helper(root, level): + if not root: + return + + if len(self.result) == level: + self.result.append([]) + + self.result[level].append(root.val) + helper(root.left, level + 1) + helper(root.right, level + 1) + + helper(root, 0) + return self.result \ No newline at end of file diff --git a/courseschedule.py b/courseschedule.py new file mode 100644 index 00000000..d9b6b9c1 --- /dev/null +++ b/courseschedule.py @@ -0,0 +1,40 @@ +# Time Complexity: O(V+E) +# Space Complexity: O(V+E) +class Solution: + def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: + indegrees = [0] * numCourses + graph = defaultdict(list) + + for pre in prerequisites: + indegrees[pre[0]] += 1 + graph[pre[1]].append(pre[0]) + + queue = deque() + count = 0 + + for i in range(len(indegrees)): + if indegrees[i] == 0: + queue.append(i) + count += 1 + + if count == numCourses: + return True + + if not queue: + return False + + while queue: + curr = queue.popleft() + dependencies = graph[curr] + if dependencies: + for dep in dependencies: + indegrees[dep] -= 1 + if indegrees[dep] == 0: + queue.append(dep) + count += 1 + + if count == numCourses: + return True + + return False +