私は、ツリーデータ構造を剪定、次の機能があります。削除するノードを適切
public static void pruneTree(final ConditionTreeNode treeNode) {
final List<ConditionTreeNode> subTrees = treeNode.getSubTrees();
for (ConditionTreeNode current : subTrees) {
pruneTree(current);
}
if(subTrees.isEmpty()) {
final ConditionTreeNode parent = treeNode.getParent();
parent.removeConditionTreeNode(treeNode);
}
if (treeNode.isLeaf()) {
//this is the base case
if (treeNode.isPrunable()) {
final ConditionTreeNode parent = treeNode.getParent();
parent.removeConditionTreeNode(treeNode);
}
return;
}
}
を、私はこれを剪定するための最良の方法が何であるかを知りたいです。私はConcurrentModificationExceptionsを現在取得しています。コレクションをコピーして元のものを削除したり、イテレータから削除することができます。このメソッドを機能させるために、私が何をする必要があるのかを誰かが理解できるように助けることができますか?
再帰呼び出しからブール値を返すと、ツリーの正しいレベルでどのように削除できるかわかりません –