Реализация структуры данных "Дерево" (указатели на родителей) - C#
Формулировка задачи:
Здравствуйте!
Краткое описание проблемы:
есть класс Tree, представляющий собой набор методов. Первый метод - CreateTree, который заполняет случайно массив, элемент массива есть переменная типа Node, которая состоит из 2чисел - номера узла и номера его родителя, ну и соответствено метод должен возвращать мне заполненный массив из n-элементов(n передаю в параметрах метода). Затем, идет ряд методов типа парент, райт сиблинг и т.д. Далее, вызываю из основной программы метод CreateTree, ну и компилятор выдает мне ошибку, что не может неявным образом перобразовать [] в Tree.
Собственно, вопрос: как мне решить эту проблему? Описать Т как массив отпадает, ибо задача поставлена так, что в последующие методы я должен передавать переменную типа Tree.
Буду очень признателен за любую помощь!
п.с. прошу не судить строго, на си шарпе пишу месяц всего(то есть пытаюсь писать), а с классами вообще дел до этого не имел..
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TreeView1 { public class Node { public int numnode; public int parent; public Node(int numnode1, int parent1) { numnode = numnode1; parent = parent1; } public override string ToString() { return "Узел - " + numnode + " Родитель - " + parent; } } public class Tree { public Node[] nodes; public Node[] T1; public string Str = null; public Tree CREATE_TREE(int n) { nodes = new Node[n]; Random sourceGen = new Random(); nodes[0] = new Node(1, 0); int rod = 1; for (int Numb = 1; Numb < n; Numb++) { int Gen=sourceGen.Next(0,1000); if (Gen <= 500) { int Gen1 = sourceGen.Next(1, 3); for (int i = 1; i <= Gen1; i++) { nodes[Numb] = new Node(Numb + 1, rod); } rod++; } else nodes[Numb] = new Node(Numb + 1, rod); } T1=nodes; return T1; } ......................// далее идут методы для работы уже с экземпляром класса Т } class Program { public const int razmer = 5; public const int razmerTreeArray = 3; static void Main(string[] args) { int[] IntArray = new int[razmer]; Tree T = new Tree(); Tree[] TreeArray = new Tree[razmerTreeArray]; T = T.CREATE_TREE(razmer); //T.OUTPUT_TREE(T,razmer); //Console.WriteLine("родитель узла 10 - "+T.PARENT(10, T)); //Console.WriteLine("корень дерева - "+T.ROOT(T)); //Console.WriteLine("длина дерева - " + T.nodes.Length); //Console.WriteLine("левый сын узла 7 - " + T.LEFTMOST_CHILD(7,T)); //Console.WriteLine("правый брат 7 - "+T.RIGHT_SIBLING(7,T)); //Console.WriteLine("возврат содержимого 7 узла - "+T.LABEL(7,T)); //T.MAKE_NULL(T); //T.OUTPUT_TREE(); //T.TOARRAY(IntArray,T); //T.TOSTRING(T); //T.OUTPUT_ARRAY(IntArray); //T.OUTPUT_STRING(T.Str); /*for (int i = 0; i < razmerTreeArray; i++) { TreeArray[i]=T.CREATE_TREE(razmer); } for (int i = 0; i < razmerTreeArray; i++) { Console.WriteLine(TreeArray[i]); }*/ Console.ReadKey(); } } }
Решение задачи: «Реализация структуры данных "Дерево" (указатели на родителей)»
textual
Листинг программы
public Node[] CREATE_TREE(int n)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д