diff --git a/problem_1.py b/problem_1.py new file mode 100644 index 00000000..6ba9cdd5 --- /dev/null +++ b/problem_1.py @@ -0,0 +1,22 @@ +# 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([root]) + ans= [] + while q: + n= len(q);level=[] + for i in range(n): + node= q.popleft() + level.append(node.val) + if node.left: q.append(node.left) + if node.right: q.append(node.right) + ans.append(level) + return ans + diff --git a/problem_2.py b/problem_2.py new file mode 100644 index 00000000..2bd3f3cc --- /dev/null +++ b/problem_2.py @@ -0,0 +1,28 @@ +from collections import deque +class Solution: + def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: + if not prerequisites: return True + + hmap, indegrees, q, cnt= {}, [0]*numCourses, deque(), 0 + for i in prerequisites: + course, prereq= i[0], i[1] + indegrees[prereq]+=1 + if course not in hmap.keys(): hmap[course]= [] + hmap[course].append(prereq) + for i in range(numCourses): + if indegrees[i]==0: + cnt+=1 + q.append(i) + if cnt==0: return False + while q: + curr= q.pop() + if curr not in hmap.keys(): continue + edges= hmap[curr] + for i in range(len(edges)): + edge= edges[i] + indegrees[edge]-=1 + if indegrees[edge]==0: + cnt+=1 + q.append(edge) + return cnt==numCourses + \ No newline at end of file