diff --git a/src/Traverse.java b/src/Traverse.java index 7945513..bd56d86 100644 --- a/src/Traverse.java +++ b/src/Traverse.java @@ -28,6 +28,38 @@ public static void main(String[] args) { v45.neighbors = new ArrayList<>(List.of(v23)); v23.neighbors = new ArrayList<>(List.of()); v67.neighbors = new ArrayList<>(List.of(v91)); + + traverse(v3); + System.out.println(sum(v3)); + } + + public static int sum(Vertex curr) { + Set> visited = new HashSet<>(); + return sum(curr,visited); + } + + public static int sum(Vertex curr, Set> visited) { + if(curr==null||visited.contains(curr)) return 0; + visited.add(curr); + int total=0; + total+=curr.data; + for(Vertex neighbor : curr.neighbors) { + total += sum(neighbor, visited); + } + return total; + } + + public static void traverse(Vertex curr) { + Set> visited = new HashSet<>(); + traverse(curr, visited); } + public static void traverse(Vertex curr, Set> visited) { + if(curr==null||visited.contains(curr)) return; + System.out.println(curr.data); + visited.add(curr); + for(Vertex neighbor : curr.neighbors) { + traverse(neighbor, visited); + } + } }