我有以下修剪树数据结构的函数:
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,并且我已经读到您可以复制集合,然后删除原始集合 - 或从迭代器中删除。有人可以帮助我了解我需要做什么才能使这种方法起作用吗?