同じトラバーサルコードを何度も書き直すことなく、各ノードでX量のインラインアクションを
実行して、バイナリツリークラスを取得してそのノードをトラバースできる方法を見つけようとしています。
Javaが関数ポインタを許可していれば、これは私が理解するのがはるかに簡単になると思います...
基本的に、私が必要とするのは次のようなものです。
public class BinaryTreeNode {
//...
public void inOrderTraversalFrom(BinaryTreeNode node, /* ??? */ actions) {
if(node.left != null)
inOrderTraversalFrom(node.left);
/* do something with "actions" here */
if(node.right != null)
inOrderTraversalFrom(node.right);
}
}
...アクションにより、各ノードで実行されるアクションのタイプに応じて異なるパラメーターのセットを取り込んで、さまざまなメソッドを実行できる場合があります。
この良い例は、これらのノードを描画することを目的としたクラスを渡すことができ、そのパラメータの1つとしてGraphicsオブジェクトを受け入れることです。これに対して、Graphicsを必要としない他の一連のアクションを実行することを目的としたクラスです。パラメータとしてのオブジェクトですが、代わりに完全に異なるパラメータのセットです。
これはどのように可能ですか?これを実行するための最も動的な方法は何でしょうか?