Я считаю, что я бы создал сущности для своих узлов и затем использовал бы ООП на моем подходе.
Если ваши требования никогда не изменятся, и вы абсолютно уверены в этом, возможно, ваш подход в порядке, но если выможет иметь изменения требований, как, например, назначить «веса» для каждого пути между узлом и другим, я думаю, это может быть трудно сделать это.(разрешил бы это, сделав что-то вроде:
Dictionary<Int32, List<Int32, Dictionary<Int32, Int32>>
???)
Я думаю, что мой класс будет выглядеть примерно так;
public class GraphNode
{
private Int32 value;
public Int32 Value
{
get { return this.value; }
}
private List<GraphNode> siblings;
public ReadOnlyCollection<GraphNode> Siblings
{
get { return new ReadOnlyCollection<GraphNode>(siblings); }
}
public void AddSibling(GraphNode node)
{
if (this == node)
throw new Exception("Can't assing a node to itself as a sibling");
if (this.siblings.Contains(node))
throw new Exception("This node is already contained in the siblings list");
this.siblings.Add(node);
}
public GraphNode(Int32 value)
{
this.value = value;
this.siblings = new List<GraphNode>();
}
}