Вывести древовидную структуру с помощью рекурсии - C#
Формулировка задачи:
помогите разобраться с рекурсией...
в C# есть массив, id | paret_id | name
нужно с помощью рекурсии вывести в таком виде
Петров
---Сидоров
------ Пупкин
------Медведев
---------Морозов
---Иванов
---Ульянов
вот мой не правильный код =)
static void print(string[,] mas, int parent_id )
{
for (int i = 0; i < mas.Length; i++)
{
int id = Convert.ToInt32(mas[i, 0]);
int parent = Convert.ToInt32(mas[i, 1]);
string name = mas[i, 2];
if (parent_id == id)
Console.WriteLine(name);
if (parent != 0)
{
Console.Write("-");
print(mas, parent);
}
Console.WriteLine( name);
}
}Решение задачи: «Вывести древовидную структуру с помощью рекурсии»
textual
Листинг программы
namespace ConsoleApplication1
{
class Program
{
static string[,] patr1 = {
{"1", "0", "Петров"},
{"2", "1", "Сидоров"},
{"3", "2", "Пупкин"},
{"4", "2", "Медведев"},
{"5", "4", "Морозов"},
{"6", "2", "Иванов"},
{"7", "2", "Ульянов"}};
static void Main(string[] args)
{
for (int i = 0; i < patr1.GetLength(0); i++)
{
Console.WriteLine(StrokaArr(patr1[i, 1], patr1[i, 2]));
}
Console.ReadKey();
}
static public string StrokaArr(string id_patr, string strName)
{
if (id_patr == "0") return strName;
else
{
for (int i = 0; i < patr1.GetLength(0); i++)
{
string id_patr_patr = "0";
if (patr1[i, 0] == id_patr)
{
id_patr_patr = patr1[i, 1];
strName = "-" + StrokaArr(id_patr_patr, strName);
}
}
}
return strName;
}
}
}