我需要保留一个排序的节点列表,从第一个节点开始,然后获取所有相邻节点.第一个节点和所有其他节点携带一个种子值,用于确定接下来将使用哪个节点,具体取决于最低种子值,一旦使用一个节点将相邻节点标记为已使用,则不会扩展即使它的种子最低也是如此.
我的问题是使用的值似乎爬到顶部并完全停止搜索,因为在3次迭代之后,顶部节点将是一个不断扩展的已使用节点.这是我的TreeSet代码以及数字爬行的一个例子
private static TreeSet<Node> nodelist = new TreeSet<Node>(
new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
if (o1.totalVal > o2.totalVal) {
if (o2.isValid)
return +1;
else
return -1;
} else if (o1.totalVal < o2.totalVal)
return -1;
else
return 0;
}
});
Run Code Online (Sandbox Code Playgroud)
这是在每组插入之后TreeSet的迭代,第四组之后的所有内容都与第四组相同,因为没有新元素可以读取.
first set
true, 37.24913792078372
true, 38.12142238654117
true, 38.57602191449718
true, 38.57658845611187
true, 39.427369179869515
false, 36.6742416417845
second set
true, 37.84689665786984
false, 37.24913792078372
true, 38.12142238654117
true, 38.57602191449718
true, 38.57658845611187
true, 39.18376618407356
true, 39.427369179869515
false, 36.6742416417845
third set …Run Code Online (Sandbox Code Playgroud)