/** * Add a vertex with the given id. * * @param id Id * * @return True if the vertex was added. */ private boolean addVertex(int id) { if (!nodeMap.containsKey(id)) { VStrahler node = new VStrahler(id); nodeMap.put(id, node); return addVertex(node); } else { throw new IllegalStateException( "This vertex has already been added!"); } }
if (node.getFinishingTime() == node.getDiscoveryTime() + 1) { node.setStrahlerNumber(1); } else { "There should be exactly one child!"); node.setStrahlerNumber(child.getStrahlerNumber()); } else { node.setStrahlerNumber(max + 1); } else { node.setStrahlerNumber(max);
/** * Returns a 2-element array consisting of the largest and second largest * Strahler numbers of children of the given node. * * @param node The node * * @return The top two Strahler numbers of the node's children. */ private int[] topTwoStrahlerNumbers(VStrahler node) { int max = Integer.MIN_VALUE; int secondLargest = Integer.MIN_VALUE; for (VStrahler child : successorListOf(node)) { int s = child.getStrahlerNumber(); if (s > max) { secondLargest = max; max = s; } else if (s > secondLargest) { secondLargest = s; } } return new int[]{max, secondLargest}; } }