Реализация структуры данных "Дерево" (указатели на родителей) - 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)