diff --git a/Problem1.java b/Problem1.java new file mode 100644 index 00000000..24630ea5 --- /dev/null +++ b/Problem1.java @@ -0,0 +1,41 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Problem1 { + public List> levelOrder(TreeNode root) { + if(root == null) return new ArrayList<>(); + List> result = new ArrayList<>(); + Queue q = new LinkedList<>(); + q.add(root); + + while(!q.isEmpty()){ + int size = q.size(); + List temp = new ArrayList<>(); + for(int i=0; i> map = new HashMap<>(); + + for(int[] pr : prerequisites){ + // pr[0] - dependent, pr[1] - independent + indegrees[pr[0]]++; + map.putIfAbsent(pr[1], new ArrayList<>()); + map.get(pr[1]).add(pr[0]); + } + + int count = 0; + Queue q = new LinkedList<>(); + + for(int i = 0; i < numCourses; i++){ + if(indegrees[i] == 0){ + q.add(i); + count++; + } + } + + if(q.isEmpty()) return false; + if(count == numCourses) return true; + + while(!q.isEmpty()){ + int curr = q.poll(); + List dependencies = map.get(curr); + if(dependencies != null){ + for(int dependent : dependencies){ + indegrees[dependent]--; + if(indegrees[dependent] == 0){ + q.add(dependent); + count++; + if(count == numCourses) return true; + } + } + } + } + + return false; + } +}