Реализовать вывод данных в консоль в виде дерева - C#
Формулировка задачи:
Напишите код. Если нет времени, буду очень благодарен если подскажете алгоритм.
Задание 1.
Дан массив, записанный в отдельном файле
Avto Nissan Almera
Avto Nissan Teana
Avto Lada Kalina
Avto Lada Priora
Avto Toyota Corolla
Avto Toyota Camry
Avto Toyota Rav4
Avto Toyota Avensis
Moto Yamaha YZF-R6
Moto Yamaha YZF-R1
Moto Suzuki V-Storm
Airplane Boeing 747
Airplane Airbus A310
Airplane Airbus A320
Реализовать вывод данных в консоль в виде дерева.
Avto
_______________Nissan
______________________________Almera
______________________________Teana
Решение задачи: «Реализовать вывод данных в консоль в виде дерева»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace Tree
{
class Program
{
static void Main(string[] args)
{
var lines = File.ReadLines("input.txt");
var tree = new Tree();
foreach (var line in lines)
{
tree.Add(line);
}
tree.WriteAllLines();
}
}
class Tree
{
private Node tree;
public Tree()
{
tree = new Node("");
}
public void Add(string line)
{
var node = tree;
var values = line.Split();
foreach (var value in values)
{
node = node.GetNode(value);
}
}
public void WriteAllLines()
{
WriteAllLines(tree, "");
}
private void WriteAllLines(Node node, string prefix)
{
if (!node.Childs.Any()) return;
foreach (var child in node.Childs.Values)
{
Console.WriteLine(prefix + child.Value);
WriteAllLines(child, prefix + "<br>");
}
}
}
public class Node
{
public Dictionary<string, Node> Childs { get; }
public string Value { get; }
public Node(string value)
{
Value = value;
Childs = new Dictionary<string, Node>();
}
public Node GetNode(string value)
{
if (!Childs.ContainsKey(value))
Childs.Add(value, new Node(value));
return Childs[value];
}
}
}