From 315efee66ebcdd5eaa0d42c66ca802120c4596ab Mon Sep 17 00:00:00 2001 From: jeetusingh247 Date: Sun, 8 Feb 2026 17:37:19 +0530 Subject: [PATCH] solved --- Binary_level_order.java | 36 +++++++++++++++++++++++++++++++ Course_Schedule.java | 47 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 Binary_level_order.java create mode 100644 Course_Schedule.java diff --git a/Binary_level_order.java b/Binary_level_order.java new file mode 100644 index 00000000..282349c0 --- /dev/null +++ b/Binary_level_order.java @@ -0,0 +1,36 @@ +// Time : O(n) , since we are traversing each element in the tree +// Space: O(n/2) --> O(n), since we are counting child nodes +// on popping each parent node going down level by level +// Approach To Solve: solved it using breadth-first-search or bfs or level +// order traversal using FIFO(first in first out) using queue, we can +// also solve using DFS as well. + +class Solution { + public List> levelOrder(TreeNode root) { + List> result = new ArrayList<>(); + if(root == null) return result; + + Queue q = new LinkedList<>(); + q.add(root); + + while(!q.isEmpty()){ + int size = q.size(); + List temp = new ArrayList<>(); + for(int i=0; i BFS topological sorting +// Time : O(V + E) where V is numCourses and E is the number of prerequisite pairs. +// Space complexity is O(V + E). +// The indegree array uses O(V). +// The adjacency list stored in the HashMap uses O(E). +// The queue can hold up to O(V) nodes in the worst case. +// No extra recursive stack since this is BFS. + +class Solution { + public boolean canFinish(int numCourses, int[][] prerequisites) { + int[] indegrees = new int[numCourses]; + HashMap> map = new HashMap<>(); + + for (int[] pr : prerequisites) { + indegrees[pr[0]]++; + map.putIfAbsent(pr[1], new ArrayList<>()); + map.get(pr[1]).add(pr[0]); // fixed syntax + } + + int count = 0; + Queue q = new LinkedList<>(); + + // only add nodes with indegree 0 + for (int i = 0; i < numCourses; i++) { + if (indegrees[i] == 0) { + q.add(i); + } + } + + while (!q.isEmpty()) { + int curr = q.poll(); + count++; + + List dependencies = map.get(curr); + if (dependencies != null) { + for (int dependent : dependencies) { + indegrees[dependent]--; + if (indegrees[dependent] == 0) { + q.add(dependent); + } + } + } + } + + return count == numCourses; + } +} \ No newline at end of file