Zweidimensionales Array wie rekursiv aufrufen?
Hallo,
ich habe ein zweidimensionales Array, bei der ich die BFS durchführen möchte,. Dabei möchte ich den anfangs übergebenen Graph, der als zweidimensionales Integerarray dargestellt ist( Java) im nächsten rekursiven Schritt so weitergeben als Parameter, dass quasi nur das zweidimensionale Array ohne den jeweils obersten Index bleibt, diesbezüglich möchte ich fragen, wie man das deklariert in Java.
danke im Voraus.
Anbei mein Quelltext:
public List<Integer> bfs(int[][] graph, int start) {
List<Integer> result = new ArrayList<Integer>();
if(!result.contains(start))
{
result.add(start);
}
int j=0;
for(int i= 0; i<graph[j].length; i++)
{
if(!result.contains(graph[j][i]))
{
result.add(graph[j][i]);
}
]
bfs(graph[i][],start); // Hier soll der Graph erneut aufgerufen werden, nur ohne Index 0 , also 1 Zeile weniger
return result;
}
2 Antworten
Es gibt in Java keine Slices, wenn du sowas meinst. Du könntest das bestehende Array verkleinern (bäh, sagt der Freund der funktionalen Programmierung) oder eine neue Kopie anlegen (auch eher bäh, wenn auch nicht so schlimm).
Aber, noch einfacher: du kannst doch einfach den gewünschten Anfangsindex als Parameter mitgeben.
Es gibt ja den Array.remove(0) Befehl, der das erste Element in einem Array löscht. Im Notfall also einfach einmal über jede Spalte iterieren und den Befehl für jede Zeile aufrufen.
Aber es gibt sicherlich Laufzeiteffizientere Möglichkeiten, hoffe ich...