再帰的にツリーをトラバースし、その再帰メソッドにスコープされた配列を返す方法はありますか?
だから私は最近、このトピックに関する他の誰かの質問に答えました. その質問はここにあります: SO Question。私のソリューションでは、再帰の範囲外の配列を使用しているため、メソッドは配列を返すことができません (または、少なくとも返すべきではありません)。ただし、配列を返すようにツリーをトラバースするための再帰メソッドを作成する方法はありますか? 再帰的なメソッドを呼び出す初期メソッドを書いても問題ありませんが、これを行う良い方法が思いつきません。
前に提案したコードは次のとおりです。
private List nodeValues = new ArrayList();
public void traversePreRecursive(BinarySearchTreeNode node)
{
if (node != null)
{
nodeValues.add(node.getValue());
traversePreRecursive(node.getLeft());
traversePreRecursive(node.getRight());
}
}
ご覧のとおり、ArrayList
は再帰の範囲外です。したがって、それを返すことはあまり意味がありません。これを行うより良い方法はありますか?