Допустим у меня есть код в java для построения Эйлерова цикла, необходимо это визуализировать. Java изучаю не так давно, знаю, пожалуй, только основы. Поиск необходимых средств для этого ни к чему конкретному не привёл, кроме советов попробовать использовать JavaFX. Я знаю, что он удобен для работы с графиками, но подойдёт ли для моих целей? Если нет, то что стоит использовать? И какую литературу посоветуете?
Код выглядит следующим образом:
package OZP;
import java.util.*;
public class Main {
static void dfs(List[] graph, int[] curEdge, ArrayList unusedEdges, List res, int u) {
while (curEdge[u] < graph[u].size()) {
int v = graph[u].get(curEdge[u]++);
boolean b = false;
for (Object o : unusedEdges) {
int[] a = (int[])o;
if ( (a[0] == u && a[1] == v) || (a[0] == v && a[1] == u) ) {
b = true;
unusedEdges.remove(o);
break;
}
}
if (b) dfs(graph, curEdge, unusedEdges, res, v);
}
res.add(u);
}
public static boolean[] BFS(boolean[][] adjacencyMatrix, int vertexCount, int givenVertex){
// Result array.
boolean[] mark = new boolean[vertexCount];
Queue queue = new LinkedList();
queue.add(givenVertex);
mark[givenVertex] = true;
while (!queue.isEmpty())
{
Integer current = queue.remove();
for (int i = 0; i < vertexCount; ++i)
if (adjacencyMatrix[current][i] && !mark[i])
{
mark[i] = true;
queue.add(i);
}
}
return mark;
}
public static List eulerCycleUndirected(List[] graph, int u, ArrayList unusedEdges) {
int n = graph.length;
int[] curEdge = new int[n];
List res = new ArrayList<>();
dfs(graph, curEdge, unusedEdges, res, u);
Collections.reverse(res);
return res;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Введите кол-во вершин и рёбер (через пробел): ");
int v = s.nextInt(), e = s.nextInt();
ArrayList unusedEdges = new ArrayList();
boolean[][] adjacencyMatrix = new boolean[v][v];
System.out.println("Введите пары вершин соединённых ребром (через пробел): ");
List[] g = new List[v];
for (int i = 0; i < v; i++) g[i] = new ArrayList<>();
for (int i = 0; i < e; i++) {
int a = s.nextInt() - 1, b = s.nextInt() - 1;
unusedEdges.add(new int[]{a, b});
g[a].add(b);
g[b].add(a);