/** * @param child child to add * @param edge the edge */ public void addChild(MutableTree<N> child, Object edge) { addChild(child); child2EdgeMap.put(child, edge); }
@Override public void dump(PrintWriter writer) { dump(writer, 0); }
@Override public List<N> fillDepthFirst() { List<N> results = new ArrayList<>(); fillDepthFirst(this, results); return results; }
@Override public void dump(PrintWriter writer, int indent) { int depth = getPathToRoot().size(); char[] chars = new char[depth + indent]; Arrays.fill(chars, '\t'); String tabs = new String(chars); writer.print(tabs); String ren = toStringRenderer.render(this); ren = ren.replace("\n", "\n" + tabs); writer.println(ren); for (Tree<N> child : getChildren()) { Object edge = getEdge(child); if (edge != null) { writer.print("\t--- "); writer.print(edge); writer.print(" ---\n\n"); } child.dump(writer, indent); } writer.flush(); }
@Override public Set<N> getUserObjectClosure() { Set<N> objects = new HashSet<>(); getUserObjectClosure(this, objects); return objects; }
@Override public List<N> getUserObjectPathToRoot() { List<N> path = new ArrayList<>(); path.add(0, this.getUserObject()); Tree<N> par = parent; while (par != null) { path.add(0, par.getUserObject()); par = par.getParent(); } return path; }
/** * @return the max depth */ public int getMaxDepth() { return getMaxDepth(this); }
@Override public Tree<N> getRoot() { if (parent == null) { return this; } return verifyNotNull(parent).getRoot(); }
@Override public void dump(PrintWriter writer, int indent) { int depth = getPathToRoot().size(); char[] chars = new char[depth + indent]; Arrays.fill(chars, '\t'); String tabs = new String(chars); writer.print(tabs); String ren = toStringRenderer.render(this); ren = ren.replace("\n", "\n" + tabs); writer.println(ren); for (Tree<N> child : getChildren()) { Object edge = getEdge(child); if (edge != null) { writer.print("\t--- "); writer.print(edge); writer.print(" ---\n\n"); } child.dump(writer, indent); } writer.flush(); }
@Override public Set<N> getUserObjectClosure() { Set<N> objects = new HashSet<>(); getUserObjectClosure(this, objects); return objects; }
@Override public List<N> getUserObjectPathToRoot() { List<N> path = new ArrayList<>(); path.add(0, this.getUserObject()); Tree<N> par = parent; while (par != null) { path.add(0, par.getUserObject()); par = par.getParent(); } return path; }
/** * @return the max depth */ public int getMaxDepth() { return getMaxDepth(this); }
@Override public Tree<N> getRoot() { if (parent == null) { return this; } return verifyNotNull(parent).getRoot(); }
@Override public void dump(PrintWriter writer, int indent) { int depth = getPathToRoot().size(); char[] chars = new char[depth + indent]; Arrays.fill(chars, '\t'); String tabs = new String(chars); writer.print(tabs); String ren = toStringRenderer.render(this); ren = ren.replace("\n", "\n" + tabs); writer.println(ren); for (Tree<N> child : getChildren()) { Object edge = getEdge(child); if (edge != null) { writer.print("\t--- "); writer.print(edge); writer.print(" ---\n\n"); } child.dump(writer, indent); } writer.flush(); }
/** * @return the size */ public int getSize() { return getUserObjectClosure().size(); }
@Override public List<N> fillDepthFirst() { List<N> results = new ArrayList<>(); fillDepthFirst(this, results); return results; }
/** * @param child child to add * @param edge the edge */ public void addChild(MutableTree<N> child, Object edge) { addChild(child); child2EdgeMap.put(child, edge); }
@Override public List<N> getUserObjectPathToRoot() { List<N> path = new ArrayList<>(); path.add(0, this.getUserObject()); Tree<N> par = parent; while (par != null) { path.add(0, par.getUserObject()); par = par.getParent(); } return path; }
/** * @return the max depth */ public int getMaxDepth() { return getMaxDepth(this); }
@Override public Tree<N> getRoot() { if (parent == null) { return this; } return verifyNotNull(parent).getRoot(); }