2017-08-13 6 views
0

最大2つの子ノードを持つと仮定して、バイナリツリーを作成しようとしました。しかし、グラフの場合は、1つ以上のグラフノードが接続されます。ツリーのために作成した以下のようなグラフノード用の単純なクラスを作成するにはどうすればよいですか?提案の理由は、特定のノードに結び付けられたすべてのノード情報を見つけるための簡単なコードを探しているからです。 グラフの場合グラフのC#クラスノード

class TreeNode 
{ 
    public int value { get; set; } 
    public TreeNode leftNode { get; set; } 
    public TreeNode rightNode { get; set; } 

} 
+1

一覧で? – Everts

+0

この場合の値は、グラフにy点のみが含まれている場合、int []値の配列になります。 – jdweng

答えて

1

、任意のノードは、任意の多くのエッジ(隣接ノード)を持つことができるので、あなたはコレクションを使用する必要があり、List<T>を言う:

// TValue - let's generalize 
// (e.g. you may want ot have double or string value associated with the node) 
class GraphNode<TValue> { 
    private List<GraphNode<TValue>> m_Connected = new List<GraphNode<TValue>>(); 

    public TValue value { get; set; } 

    // get (and no set) - we don't want to assign the collection as whole 
    // if we want to add/remove a neighbor we'll call Neighbors.Add, Neighbors.Remove 
    public List<GraphNode<TValue>> Neighbors { 
     get { 
     return m_Connected; 
     } 
    } 
}