0
私はこの木を持っている:ルートから任意のツリー上の与えられたノードへのパスを取得する方法は?
Harry(root)
Jane
Joe
Diane
George
Jill
Carol
Mary
Mark
Bill
Grace
私は深さ優先探索を使用してこの機能をthis page
にコードを拡張しました。
public static int path(Tree t, String root, String n)
{
// Default traversal strategy is 'depth-first'
int counter = 0;
Iterator<Node> depthIterator = t.iterator(root);
while (depthIterator.hasNext()) {
Node node = depthIterator.next();
if(node.getIdentifier().compareTo(n)==0)
{
System.out.println("Distance from " + root +" to " + n + " " + counter);
return counter;
}
counter++;
System.out.println(node.getIdentifier());
}
return 0;
}
最終的な目標は、ルートとノードの間のパスの長さを見つけることです。この関数を実行すると、ルートとジョーからの距離と、ルートとダイアン(兄弟である)からの距離が異なります。これは、深さ優先検索のステップを数えるためです。 このアプローチは間違っているのですか、それを修正する方法ですか?
深度の最初の検索のイテレータを使用することは重要ですか?私はイテレータがツリー内でジャンプするので問題になると思います(例えば、深さ5で、次のノードはルート(深さ1)の子です)。私は深さの数を含むあなた自身の深さの最初の検索を書くことは、既存のIteratorを使うよりも簡単だろうと思っています。 –
ノードを知っているなら、それをスタックにプッシュできませんでしたか?その親に行き、ルートになるまでスタックにプッシュできませんでした。その後、スタック全体をポップして、 –
@VenomFangs Nodeクラスに親がないようです(ノードはtheireの親を知らない)。彼らは子供たちだけを知っている。 –