imaronsu
BAN USERimport java.util.*;
public class Clone {
private HashMap<Node, Node> marker;
public Clone() {marker = new HashMap<Node, Node>(); }
void clone(Node s, Node d) {
if (s != null) {
d.data = s.data;
marker.put(s, d);
}
for (Node w : s.neighbors) {
if (!marker.containsKey(w)) {
Node c = new Node();
clone(w, c);
d.add(c);
}
else {
d.add(marker.get(w));
}
}
}
public static void main (String[] args) {
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
n1.add(n2);
n2.add(n3);
n3.add(n1);
Clone c = new Clone();
Node c1 = new Node();
c.clone(n1, c1);
DFS p1 = new DFS(c1);
}
}
class DFS {
private HashSet<Node> marker;
private int count;
public DFS(Node s) {marker = new HashSet<Node>();dfs(s);}
private void dfs(Node s) {
if (s != null) {
marker.add(s);
}
for (Node w : s.neighbors) {
if (!marker.contains(w))
dfs(w);
System.out.println("("+ s.data() + ")" + "->" + "(" + w.data() + ")");
}
}
}
class Node {
int data;
ArrayList<Node> neighbors;
public Node(){neighbors = new ArrayList<Node>();}
public Node(int data) {
this.data = data;
neighbors = new ArrayList<Node>();}
public void data(int i) {this.data = data;}
public ArrayList<Node> neighbors() {return this.neighbors;}
public int data() {return this.data;}
public void add(Node i) {this.neighbors.add(i);}
}
import java.util.*;
public class Clone {
private HashMap<Node, Node> marker;
public Clone() {marker = new HashMap<Node, Node>(); }
void clone(Node s, Node d) {
if (s != null) {
d.data = s.data;
marker.put(s, d);
}
for (Node w : s.neighbors) {
if (!marker.containsKey(w)) {
Node c = new Node();
clone(w, c);
d.add(c);
}
else {
d.add(marker.get(w));
}
}
}
public static void main (String[] args) {
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
n1.add(n2);
n2.add(n3);
n3.add(n1);
Clone c = new Clone();
Node c1 = new Node();
c.clone(n1, c1);
DFS p1 = new DFS(c1);
}
}
class DFS {
private HashSet<Node> marker;
private int count;
public DFS(Node s) {marker = new HashSet<Node>();dfs(s);}
private void dfs(Node s) {
if (s != null) {
marker.add(s);
}
for (Node w : s.neighbors) {
if (!marker.contains(w))
dfs(w);
System.out.println("("+ s.data() + ")" + "->" + "(" + w.data() + ")");
}
}
}
class Node {
int data;
ArrayList<Node> neighbors;
public Node(){neighbors = new ArrayList<Node>();}
public Node(int data) {
this.data = data;
neighbors = new ArrayList<Node>();}
public void data(int i) {this.data = data;}
public ArrayList<Node> neighbors() {return this.neighbors;}
public int data() {return this.data;}
public void add(Node i) {this.neighbors.add(i);}
}
- imaronsu July 23, 2013