From 2a612055c80478130439c815acfea2a5d2841ea1 Mon Sep 17 00:00:00 2001 From: Hemish Veeraboina <85383455+v-hemish@users.noreply.github.com> Date: Thu, 25 Sep 2025 20:18:23 -0400 Subject: [PATCH] BFS-1 --- problem1.py | 30 ++++++++++++++++++++++++++++++ problem2.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 problem1.py create mode 100644 problem2.py diff --git a/problem1.py b/problem1.py new file mode 100644 index 00000000..f3101515 --- /dev/null +++ b/problem1.py @@ -0,0 +1,30 @@ +# Space Complexity: O(N) +# Time Complexity: O(N) + +# 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 levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: + if not root: return [] + q = collections.deque() + q.append(root) + ans = [] + while q: + s = len(q) + li = [] + for _ in range(s): + node = q.popleft() + li.append(node.val) + if node.left: + q.append(node.left) + if node.right: + q.append(node.right) + ans.append(li) + + + return ans + diff --git a/problem2.py b/problem2.py new file mode 100644 index 00000000..d8cbfe2d --- /dev/null +++ b/problem2.py @@ -0,0 +1,30 @@ +# Time Complexity: O(N) +# Space Complexity: O(N) +class Solution: + def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: + + adj = collections.defaultdict(list) + ind = [0] * numCourses + + for u,v in prerequisites: + adj[u].append(v) + ind[v]+=1 + + q = collections.deque() + + for i in range(numCourses): + if ind[i] == 0: + q.append(i) + + + while q: + node = q.popleft() + for neigh in adj[node]: + ind[neigh]-=1 + if ind[neigh] == 0: + q.append(neigh) + + return sum(ind) == 0 + + +