[Solved] 2-D array Friends of Friends List


Why not try something like this. Of course, i have taken a bit of freedom on the design as you didnt provide any code. Hope this helps!

private static Set<Node> getNodesFollowAllEdges(Node node) {
    Set<Node> nodes = getNodesFollowAllEdges(node, new HashSet<>());
    // remember to remove the original node from the set
    nodes.remove(node);
    return nodes;
}

private static Set<Node> getNodesFollowAllEdges(Node node, Set<Node> visited) {
    if (node.getConnectedNodes().isEmpty()) {
        return visited;
    }

    for (Node n : node.getConnectedNodes()) {
        if (!visited.contains(n)) {
            visited.add(n);
            getNodesFollowAllEdges(n, visited);
        }
    }
    return visited;
}

Also, it is very easy to provide a maximum search dept. Just add int maxDept and increase it every recursion step.

Given the following example:

Node a = new Node("A");
Node b = new Node("B");
Node c = new Node("C");
Node d = new Node("D");
Node e = new Node("E");
Node f = new Node("F");
Node g = new Node("G");

a.addConnectedNodes(b, c, d);
b.addConnectedNodes(e, f);
c.addConnectedNodes(a);
e.addConnectedNodes(b);
f.addConnectedNodes(b);
g.addConnectedNodes(f);

Set<Node> friends = getNodesFollowAllEdges(a);
friends.forEach(node -> System.out.println(node.getName()));

should give you the correct result of (order neglected)

B
F
E

Note: Remember that, since its a Set, the resulting nodes can be in any order.

solved 2-D array Friends of Friends List