public static SuffixTree create(Text text) { SuffixTree tree = new SuffixTree(text); Suffix active = new Suffix(tree.root, 0, -1); for (int i = 0; i < text.length(); i++) { tree.addPrefix(active, i); } return tree; }
public static void perform(TextSet text, Collector reporter) { new Search(SuffixTree.create(text), text, reporter).compute(); }
stack.add(tree.getRootNode()); while (!stack.isEmpty()) { Node node = stack.removeLast(); node.endSize = list.size(); } else { if (!node.equals(tree.getRootNode())) {
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 }
edge = active.getOriginNode().findEdge(symbolAt(endIndex)); if (edge != null) { break; edge = active.getOriginNode().findEdge(symbolAt(active.getBeginIndex())); int span = active.getSpan(); if (Objects.equals(symbolAt(edge.getBeginIndex() + span + 1), symbolAt(endIndex))) { break; updateSuffixNode(lastParentNode, parentNode); lastParentNode = parentNode; updateSuffixNode(lastParentNode, parentNode); active.incEndIndex();
Node node = tree.getRootNode(); break; if (!Objects.equals(tree.symbolAt(j), str.symbolAt(i))) { return -1;
public Object symbolAt(int index) { return suffixTree.symbolAt(index); }
// this is where the SuffixTree instances will end up List<SuffixTree> suffixes = new ArrayList<SuffixTree>(); String[] strings = new String[3]; for (String string : strings) { // A new suffix tree is created here but if you don't do anything // with it then it is marked as garbage collectable when the closed // curly brace is reached SuffixTree t = new SuffixTree(string); // Now I'm pushing the object into the suffixes list: this will prevent // the loss of the object currently stored in the t variable suffixes.add(t); }
edge = active.getOriginNode().findEdge(symbolAt(endIndex)); if (edge != null) { break; edge = active.getOriginNode().findEdge(symbolAt(active.getBeginIndex())); int span = active.getSpan(); if (Objects.equal(symbolAt(edge.getBeginIndex() + span + 1), symbolAt(endIndex))) { break; updateSuffixNode(lastParentNode, parentNode); lastParentNode = parentNode; updateSuffixNode(lastParentNode, parentNode); active.incEndIndex();
public Object symbolAt(int index) { return suffixTree.symbolAt(index); }
public static SuffixTree create(Text text) { SuffixTree tree = new SuffixTree(text); Suffix active = new Suffix(tree.root, 0, -1); for (int i = 0; i < text.length(); i++) { tree.addPrefix(active, i); } return tree; }
public static void perform(TextSet text, Collector reporter) { new Search(SuffixTree.create(text), text, reporter).compute(); }
stack.add(tree.getRootNode()); while (!stack.isEmpty()) { Node node = stack.removeLast(); node.endSize = list.size(); } else { if (!node.equals(tree.getRootNode())) {