aboutsummaryrefslogtreecommitdiff
path: root/CloneGraph.java
blob: ada085c69691616c9b26350d89759ef369dcfb7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.lang.*;
import java.util.*;
import node.*;

class CloneGraph {
	public static GraphNode cloneGraph(GraphNode node) {
		Stack<GraphNode> stack = new Stack<GraphNode>();
		ArrayList<GraphNode> visited = new ArrayList<GraphNode>();
		stack.push(node);
		GraphNode clone = new GraphNode(node.val, node.neighbors);
		while (!stack.empty()) {
			node = stack.pop();
			if (visited.contains(node))
				continue;
			GraphNode curr = new GraphNode(node.val, node.neighbors);
			visited.add(node);
			System.out.println("Node: " + node.val);
			System.out.print("Neighbors: ");
			for (GraphNode neighbor : node.neighbors) {
				stack.push(neighbor);
				System.out.print(neighbor.val + " ");
			}
			System.out.println();
		}
		return clone;
	}

	public static void main(String[] args) {
		GraphNode head = new GraphNode(1);
		GraphNode first = new GraphNode(2);
		GraphNode second = new GraphNode(3);
		GraphNode third = new GraphNode(4, new ArrayList<>(Arrays.asList(first, second)));
		second.neighbors = new ArrayList<>(Arrays.asList(head, third));
		first.neighbors = new ArrayList<>(Arrays.asList(head, second));
		head.neighbors = new ArrayList<>(Arrays.asList(first, second));

		GraphNode curr = cloneGraph(head);
	}
}