From 688302063a36466f3603040ce8092ea3a0710090 Mon Sep 17 00:00:00 2001 From: Shaikh Israil Date: Sat, 14 Mar 2026 14:31:51 -0700 Subject: [PATCH] Level order, course schedule --- leetcode-102.py | 36 ++++++++++++++++++++++++++++++++++++ leetcode-207.py | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 leetcode-102.py create mode 100644 leetcode-207.py diff --git a/leetcode-102.py b/leetcode-102.py new file mode 100644 index 00000000..08e7e816 --- /dev/null +++ b/leetcode-102.py @@ -0,0 +1,36 @@ +#102. Binary Tree Level Order Traversal +# https://leetcode.com/problems/binary-tree-level-order-traversal/ + +# T.C: O(n) +# S.C: 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 +from collections import deque +class Solution: + def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: + + if not root: + return [] + + q = deque([]) + q.append(root) + res = [] + while q: + size = len(q) + curr = [] + for i in range(size): + item = q.popleft() + curr.append(item.val) + if item.left: + q.append(item.left) + if item.right: + q.append(item.right) + + res.append(curr) + + return res \ No newline at end of file diff --git a/leetcode-207.py b/leetcode-207.py new file mode 100644 index 00000000..9065e230 --- /dev/null +++ b/leetcode-207.py @@ -0,0 +1,38 @@ +# 207. Course Schedule +# https://leetcode.com/problems/course-schedule/ +# +# T.C: O(n) +# S.C: O(n) + + +from collections import defaultdict, deque +class Solution: + def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: + + indegree = [0 for i in range(numCourses)] + adj = defaultdict(list) + + for el in prerequisites: + adj[el[1]]. append(el[0]) + indegree[el[0]] += 1 + q = deque() + for i in range(numCourses): + if indegree[i] == 0: + q.append(i) + + if len(q) == numCourses: + return True + + while q: + curr = q.popleft() + + for child in adj[curr]: + indegree[child] -= 1 + if indegree[child] == 0: + q.append(child) + print(indegree, q) + for i in range(numCourses): + if indegree[i] != 0: + return False + + return True \ No newline at end of file