@Override void delEdge(Edge<T> e) { getFathers.remove(e.getFather(), e.getSon()); Node<T> father = getFather(e.getSon()); Node<T> n = tNode.get(e.getSon()); if (father == null) { tree.remove(n); } else if (father != n.getFather()) { tree.move(father, n); } }
@Override public GraphMappPolicy<T> create() { GraphShortestInc<T> ret = new GraphShortestInc<T>(); ret.tree = new HashTree(); ret.tNode = new HashMap(); tNode.put(null, tree.getRoot()); return ret; }
@Override void addEdge(Edge<T> e) { Node<T> fatherN = tNode.get(e.getFather()); Node<T> son = tNode.get(e.getSon()); /* * Vérifie qu'il n'a pas déjà un père et un autre. */ if (son != null && (son.getFather() != null || !son.getFather().getValue().equals(e.getFather()))) { if (takeFirst(fatherN, son.getFather())) { /* * On déplace si le level est plus petit si les level sont egaux * on prend T du père en compte */ tree.move(fatherN, son); } } else { Node<T> n = tree.add(fatherN, e); tNode.put(n.getValue(), n); } }