diff --git a/problem1.cs b/problem1.cs new file mode 100644 index 00000000..18ea94e2 --- /dev/null +++ b/problem1.cs @@ -0,0 +1,45 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * public int val; + * public TreeNode left; + * public TreeNode right; + * public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +public class Solution { + public IList> LevelOrder(TreeNode root) { + if(root == null) return []; + Queue levelQueue = new Queue(); + levelQueue.Enqueue(root); + List> result = new List>(); + while(levelQueue.Count>0) + { + List temp = new List(); + int size = levelQueue.Count; + int count=0; + while(count> adjList = new Dictionary>(); + + foreach (var p in prerequisites) + { + inDegrees[p[0]]++; + if (!adjList.ContainsKey(p[1])) + adjList[p[1]] = new List(); + adjList[p[1]].Add(p[0]); + } + + Queue q = new Queue(); + for (int i = 0; i < numCourses; i++) + { + if (inDegrees[i] == 0) + q.Enqueue(i); + } + + int count = 0; + while (q.Count > 0) + { + int course = q.Dequeue(); + count++; + + if (adjList.ContainsKey(course)) + { + foreach (var next in adjList[course]) + { + inDegrees[next]--; + if (inDegrees[next] == 0) + q.Enqueue(next); + } + } + } + + return count == numCourses; + } +} \ No newline at end of file