在Java中将有向无环图表示为二维数组
如果每一行包含一个特定节点的直接外邻居,我如何将一个有向无环图表示为一个二维数组。例如,如果我有一个数组int[][]边,边[0]={1,2,3}表示从节点0到节点1、2和3有边。在Java中将有向无环图表示为二维数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,如果每一行包含一个特定节点的直接外邻居,我如何将一个有向无环图表示为一个二维数组。例如,如果我有一个数组int[][]边,边[0]={1,2,3}表示从节点0到节点1、2和3有边。int n; int n; List<Integer>[] adj; AdjacencyLists(int n) { adj = (List<Integer>[])new List[n]; for (int i = 0; i < n; i++) adj[i
int n;
int n;
List<Integer>[] adj;
AdjacencyLists(int n) {
adj = (List<Integer>[])new List[n];
for (int i = 0; i < n; i++)
adj[i] = new ArrayList<Integer>(Integer.class);
}
.....
adj[a].add(b); // a -> b edge
列表[]形容词;
邻接柱状图(int n){
adj=(列表[])新列表[n];
对于(int i=0;ib边
如果必须使用2D数组(至少在Java中2D数组不能稀疏),则需要分配一个NxN数组:boolean[][]边=新的boolean[n][n]代码>
您需要考虑退化情况,其中所有节点都是
在单链中,因此需要n-1
行
您需要允许在任何节点上有一个星形根,因此n-1
列
在一个数组中存储地址要比在j
行、位置k
处简单地存储j
->k
的边上的“yes”复杂得多。更新后者要快得多
显然,明智的方法是从源节点到目标节点的哈希映射,但这显然不是您想要的。谢谢您的回答,但它并没有真正回答我的问题。它怎么没有回答?只需将节点分别放在a和b的位置,每个节点都将有所有的Neughbour。我需要使用二维数组,而不是列表。这是一样的…任何方法都可以使用矩阵来确定两个节点是否连接,但无法快速获得,所有节点都连接到特定节点。我如何使用ArrayStack?我需要导入什么?我必须测试一个方法,该方法将表示有向无环图的二维数组作为输入,这就是我需要它的原因。你能举个例子吗?因为我不太明白你的意思?