私は、予約オーダートラバーサルメソッドを作成しようとしています。私は複数の子ノードを持つ自分のノードを使用しています。それらを追跡するために、各ノードには一連の子があります。再帰的にノードのマップをトラバースしようとすると、null値が継続できるようにチェックするのではなく、プログラムを強制終了するIndexOutOfBoundsExceptionが発生します。私はtryブロックでそれをキャッチするために最善を尽くしましたが、私はそれをまとめています。メソッドは各子配列の最初の子をたどるだけです。IndexOutOfBoundsExceptionを使用した再帰
private void traverse (Node root) {
peggyPoints.add(root);
int i = 0;
if (root.nexts != null) {
try {
Node current = root.nexts.get(i);
while (current != null) {
traverse(current);
current = current.nexts.get(i+1);
}
} catch (IndexOutOfBoundsException e) { }
}
}
peggyPointsが訪問したノードを追跡するために使用されるのArrayListです:
は、ここに私のコードです。 nextsは、指定されたノードの子の配列です。訪問したノードは1、2、4、5、3、6、私はそれが唯一の1を訪問持っているものと、2、4
おかげでなければなりません
1
/\
2 3
/\ \
4 5 6
のマップを考える
あらかじめ!
@Jason感謝を。実際、境界外のインデックスのtry catchの存在は、悪いデザインのIMOの兆候です。 –
完璧に動作します、ありがとう! –