private void GetListHelper(CourseTreeNode Node)
 {
     foreach (CourseTreeNode Child in Node.Children)
     {
         GetListHelper(Child);
     }
     ListResult.Add(Node.Course);
 }
 //Returns the node for a particular course
 public CourseTreeNode GetNode(CourseTreeNode curr, int CourseID)
 {
     if (curr.Course.Id == CourseID)
     {
         return(curr);
     }
     else
     {
         foreach (CourseTreeNode Node in curr.Children)
         {
             return(GetNode(Node, CourseID));
         }
     }
     return(Root);
 }
 public CourseTreeNode getRoot()
 {
     if (Root == null)
     {
         //Create a dummy course to serve as the root
         Course dummy = new Course();
         dummy.Id          = 00000;
         dummy.Number      = 000;
         dummy.Department  = "CSC";
         dummy.Title       = "Root";
         dummy.Description = "Root course";
         dummy.Units       = 0.0M;
         Root = new CourseTreeNode(this, dummy);
     }
     return(Root);
 }
 //add a node to the tree
 public void AddNode(CourseTreeNode Node)
 {
     //Connect to parents
     if (Node.Course.Prerequisites.Count == 0)
     {
         Node.Parents.Add(getRoot());
         Root.Children.Add(Node);
     }
     else
     {
         foreach (Course req in Node.Course.Prerequisites)
         {
             CourseTreeNode Temp = GetNode(getRoot(), req.Id);
             Node.Parents.Add(Temp);
             Temp.Children.Add(Node);
         }
     }
 }
 //Add a course for which this is a prerequisite to the children list
 public void AddRequiredFor(CourseTreeNode Course)
 {
     Children.Add(Course);
 }
 //Add a prerequisite course to the list of parents
 public void AddPrereq(CourseTreeNode Prereq)
 {
     Parents.Add(Prereq);
 }