Node endNode = edge.getEndNode(); endNode.depth = node.depth + edge.getSpan() + 1; stack.addLast(endNode); int max = -1; for (Edge edge : node.getEdges()) { max = Math.max(edge.getEndNode().endSize, max);
public void canonize() { if (isImplicit()) { Edge edge = originNode.findEdge(originNode.symbolAt(beginIndex)); int edgeSpan = edge.getSpan(); while (edgeSpan <= getSpan()) { beginIndex += edgeSpan + 1; originNode = edge.getEndNode(); if (beginIndex <= endIndex) { edge = edge.getEndNode().findEdge(originNode.symbolAt(beginIndex)); edgeSpan = edge.getSpan(); } } } }
public Node splitEdge(Suffix suffix) { remove(); Edge newEdge = new Edge(beginIndex, beginIndex + suffix.getSpan(), suffix.getOriginNode()); newEdge.insert(); newEdge.endNode.setSuffixNode(suffix.getOriginNode()); beginIndex += suffix.getSpan() + 1; startNode = newEdge.getEndNode(); insert(); return newEdge.getEndNode(); }
private StringSuffixTree(String text) { suffixTree = SuffixTree.create(new StringText(text)); Queue<Node> queue = new LinkedList<>(); queue.add(suffixTree.getRootNode()); while (!queue.isEmpty()) { Node node = queue.remove(); if (node.getEdges().isEmpty()) { numberOfLeaves++; } else { numberOfInnerNodes++; for (Edge edge : node.getEdges()) { numberOfEdges++; queue.add(edge.getEndNode()); } } } numberOfInnerNodes--; // without root }
node = edge.getEndNode();
Node endNode = edge.getEndNode(); endNode.depth = node.depth + edge.getSpan() + 1; stack.addLast(endNode); int max = -1; for (Edge edge : node.getEdges()) { max = Math.max(edge.getEndNode().endSize, max);
public void canonize() { if (isImplicit()) { Edge edge = originNode.findEdge(originNode.symbolAt(beginIndex)); int edgeSpan = edge.getSpan(); while (edgeSpan <= getSpan()) { beginIndex += edgeSpan + 1; originNode = edge.getEndNode(); if (beginIndex <= endIndex) { edge = edge.getEndNode().findEdge(originNode.symbolAt(beginIndex)); edgeSpan = edge.getSpan(); } } } }
public Node splitEdge(Suffix suffix) { remove(); Edge newEdge = new Edge(beginIndex, beginIndex + suffix.getSpan(), suffix.getOriginNode()); newEdge.insert(); newEdge.endNode.setSuffixNode(suffix.getOriginNode()); beginIndex += suffix.getSpan() + 1; startNode = newEdge.getEndNode(); insert(); return newEdge.getEndNode(); }