public void Traverse(TreeVisitor <T> visitor, TreePreTraverse previsitor, TreePostTraverse postvisitor, int ignoredepth = -1) { this.traverse((NTree <T>) this, visitor, previsitor, postvisitor, ignoredepth); }
private void traverse(NTree <T> node, TreeVisitor <T> visitor, TreePreTraverse previsitor, TreePostTraverse postvisitor, int ignoredepth) { if (((visitor == null) || (ignoredepth >= 0)) || visitor(node.data)) { foreach (NTree <T> tree in node.children) { if ((previsitor != null) && (ignoredepth < 0)) { previsitor(); } this.traverse(tree, visitor, previsitor, postvisitor, ignoredepth - 1); if ((postvisitor != null) && (ignoredepth < 0)) { postvisitor(); } } } }