Класс Generics и другая проблема с синтаксисом программы создают ошибки в цикле foreach - PullRequest
0 голосов
/ 27 мая 2020

В 'дереве' в foreach l oop я получаю сообщение об ошибке: оператор foreach не может работать с типом Tree, поскольку Tree не содержит определения экземпляра publi c для GetEnumerator.

On вторые «данные» в foreach l oop Я получаю сообщение об ошибке, не могу преобразовать из «T» в строку.

У кого-нибудь есть идеи, как это решить?

using System;
using System.Collections.Generic;
using System.ComponentModel.Design.Serialization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PSearchTreeJW
{
    public class Program 
    {
        public static void Main(string[] args)
        {


            string[] stringArray = { "A", "B", "C", "D", "E", "F", "G" };

            var stringTree = new Tree<string>();

            PopulateTree(stringArray, stringTree, nameof(stringTree));
            TraverseTree(stringTree, nameof(stringTree));



            Console.WriteLine($"\n \nTree Size: ");
            Console.WriteLine($"{stringTree.Size}");

            //Console.WriteLine("Find C");
            // var node = tree.Find("C");

        }

        public static void PopulateTree<T>(Array array, Tree<string> tree, string name) 
        {
            Console.WriteLine($"\n\n\nInserting into :");

            foreach (T data in tree)
            {
                Console.Write($"{data}");
                tree.InsertNode(data);
            }
        }
        public static void TraverseTree<T>(Tree<string> tree, string treeType) where T : IComparable
        {
            Console.WriteLine($"\n\nPreorder traversal");
            tree.PreorderTraversal();

            Console.WriteLine($"\n\nInorder traversal");
            tree.InorderTraversal();

            Console.WriteLine($"\n\nPostorder traversal");
            tree.PostOrderTraversal();

            Console.ReadLine();
        }

    }
}
...