そうか、親へのリストを辿ればいいわけですね、thx

7,8はつまりリストに一致するものがあって且つその一致するものと現在のノード
コストの比較を行えばいいんでしょうか?
つまり
function check (list, node) {
 for each (list) {
  if (list == node && list.cost < node.cost) skip;
 }
}
抽象的な表現ですがこんな感じ?