private Collection<TaxonomyNode<ATermAppl>> search(final boolean topSearch, final Role c, final TaxonomyNode<ATermAppl> x, final Set<TaxonomyNode<ATermAppl>> visited, final List<TaxonomyNode<ATermAppl>> result, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final List<TaxonomyNode<ATermAppl>> posSucc = new ArrayList<>(); visited.add(x); final Collection<TaxonomyNode<ATermAppl>> list = topSearch ? x.getSubs() : x.getSupers(); for (final TaxonomyNode<ATermAppl> next : list) if (topSearch) { if (subsumes(next, c, marked)) posSucc.add(next); } else if (subsumed(next, c, marked)) posSucc.add(next); if (posSucc.isEmpty()) result.add(x); else for (final TaxonomyNode<ATermAppl> y : posSucc) if (!visited.contains(y)) search(topSearch, c, y, visited, result, marked); return result; }
private Collection<TaxonomyNode<ATermAppl>> search(final boolean topSearch, final Role c, final TaxonomyNode<ATermAppl> x, final Set<TaxonomyNode<ATermAppl>> visited, final List<TaxonomyNode<ATermAppl>> result, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final List<TaxonomyNode<ATermAppl>> posSucc = new ArrayList<>(); visited.add(x); final Collection<TaxonomyNode<ATermAppl>> list = topSearch ? x.getSubs() : x.getSupers(); for (final TaxonomyNode<ATermAppl> next : list) if (topSearch) { if (subsumes(next, c, marked)) posSucc.add(next); } else if (subsumed(next, c, marked)) posSucc.add(next); if (posSucc.isEmpty()) result.add(x); else for (final TaxonomyNode<ATermAppl> y : posSucc) if (!visited.contains(y)) search(topSearch, c, y, visited, result, marked); return result; }
mark(_taxonomyImpl.getBottomNode(), marked, Boolean.FALSE, Propagate.NONE); final Collection<TaxonomyNode<ATermAppl>> superNodes = search(true, c, _taxonomyImpl.getTop(), new HashSet<TaxonomyNode<ATermAppl>>(), new ArrayList<TaxonomyNode<ATermAppl>>(), marked); final Collection<TaxonomyNode<ATermAppl>> subNodes = search(false, c, _taxonomyImpl.getBottomNode(), new HashSet<TaxonomyNode<ATermAppl>>(), new ArrayList<TaxonomyNode<ATermAppl>>(), marked);
mark(_taxonomyImpl.getBottomNode(), marked, Boolean.FALSE, Propagate.NONE); final Collection<TaxonomyNode<ATermAppl>> superNodes = search(true, c, _taxonomyImpl.getTop(), new HashSet<TaxonomyNode<ATermAppl>>(), new ArrayList<TaxonomyNode<ATermAppl>>(), marked); final Collection<TaxonomyNode<ATermAppl>> subNodes = search(false, c, _taxonomyImpl.getBottomNode(), new HashSet<TaxonomyNode<ATermAppl>>(), new ArrayList<TaxonomyNode<ATermAppl>>(), marked);