/*
            For each node, we look that the string is contained in
            the listing title. If it's the case, we recursively do the
            same for its children.
            At last level, we add the Node's data to the List of string.
        */
        public void FindMatches(Node N, ref List<string> Matches)
        {
            foreach (Node Temp in N.Children)
            {
                if (title.Contains(Temp.Data))
                    FindMatches(Temp, ref Matches);

                if (Temp.Level == new Product().LevelsOrder().Length)
                    Matches.Add(Temp.Data);
            }
        }
 /*
     Head corresponds to level 0.
     All the levels different from 0 corresponds to
     the hierarchy of class variables of Product.
 */
 public ListProducts()
 {
     Head=new Node(0,"");
 }