diff --git a/src/class10/Code02_BFS.java b/src/class10/Code01_BFS.java similarity index 95% rename from src/class10/Code02_BFS.java rename to src/class10/Code01_BFS.java index cb87d5e..c219524 100644 --- a/src/class10/Code02_BFS.java +++ b/src/class10/Code01_BFS.java @@ -4,7 +4,7 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.Queue; -public class Code02_BFS { +public class Code01_BFS { // 从node出发,进行宽度优先遍历 public static void bfs(Node node) { diff --git a/src/class10/Code01_UnionFind.java b/src/class10/Code01_UnionFind.java deleted file mode 100644 index 937d185..0000000 --- a/src/class10/Code01_UnionFind.java +++ /dev/null @@ -1,71 +0,0 @@ -package class10; - -import java.util.HashMap; -import java.util.List; -import java.util.Stack; - -public class Code01_UnionFind { - - public static class Node { - V value; - - public Node(V v) { - value = v; - } - } - - public static class UnionSet { - public HashMap> nodes; - public HashMap, Node> parents; - public HashMap, Integer> sizeMap; - - public UnionSet(List values) { - nodes = new HashMap<>(); - parents = new HashMap<>(); - sizeMap = new HashMap<>(); - for (V cur : values) { - Node node = new Node<>(cur); - nodes.put(cur, node); - parents.put(node, node); - sizeMap.put(node, 1); - } - } - - public Node findFather(Node cur) { - Stack> path = new Stack<>(); - while (cur != parents.get(cur)) { - path.push(cur); - cur = parents.get(cur); - } - while (!path.isEmpty()) { - parents.put(path.pop(), cur); - } - return cur; - } - - public boolean isSameSet(V a, V b) { - if (!nodes.containsKey(a) || !nodes.containsKey(b)) { - return false; - } - return findFather(nodes.get(a)) == findFather(nodes.get(b)); - } - - public void union(V a, V b) { - if (!nodes.containsKey(a) || !nodes.containsKey(b)) { - return; - } - Node aHead = findFather(nodes.get(a)); - Node bHead = findFather(nodes.get(b)); - if (aHead != bHead) { - int aSetSize = sizeMap.get(aHead); - int bSetSize = sizeMap.get(bHead); - Node big = aSetSize >= bSetSize ? aHead : bHead; - Node small = big == aHead ? bHead : aHead; - parents.put(small, big); - sizeMap.put(big, aSetSize + bSetSize); - sizeMap.remove(small); - } - } - } - -}