わかりました私はこのコードを持っています:
public void TraverseTree(TreeNode node) {
TraverseTree(node.getLeftChild());
System.out.println(node.getKey());
TraverseTree(node.getRightChild());
}
これは実際にツリーのノードをトラバースし、それらを出力します。テスト ケースを書こうとしていたときに、戻り値の型のない関数を単体テストするにはどうすればよいかということに気付きました。
「単体テスト」に値するようにコードを変更すると、次のようになります。
public ArrayList<Object> TraverseTree(TreeNode node, ArrayList<Object> array) {
if(array == null)
array = new ArrayList<Object>();
traverseTree(node.getLeftChild(), array);
array.add(node.getKey())
traverseTree(node.getRightChild(), array);
return array;
}
今私は考えています、これはこれを行う正しい方法ですか?再帰呼び出しごとに ArrayList オブジェクトがスタックにプッシュされるという事実はどうですか? これは良いアプローチですか?ツリーに何千ものキーが含まれている場合はどうなりますか?
これを行うためのより良い方法はありますか?最初のコード サンプル (何も返さないコード サンプル) を単体テストすることは可能ですか? 私のテストケースは単純です1)正しい順序で返されますか?ツリーが null の場合はどうなりますか? 等