2016-11-16 10 views
1

私は不変のバイナリツリーを実装しました。これが正しい要素であるかどうかを知りたかったのです。前もって感謝します。要素を不変のバイナリツリーに正しく配置する方法は?

BinaryTree<Integer, Integer> treeMap = new BinaryTree<>(Integer::compare); 
treeMap = (BinaryTree<Integer, Integer>) treeMap.put(1, 1); 
treeMap = (BinaryTree<Integer, Integer>) treeMap.put(3, 2); 
treeMap = (BinaryTree<Integer, Integer>) treeMap.put(2, 2); 
+0

putメソッドがMap

+0

を返すので、私はBinaryTreeにキャストしています。各呼び出し時に新しいインスタンスを回復することを強制できません。ここで、あなたの 'BinaryTree'が' Map'をキャストしてキャストを取り除く場合、 'treeMap'を' Map 'として宣言できます。 – AxelH

+0

ありがとう、ありがとう。 –

答えて

0

いいえ、その不可能なバイナリツリークラスに要素を入れるのは正しい方法ではないようです。

".put"メソッドはMapのメソッドなので、Mapオブジェクトを使用して基本的なので、BinaryTreeにキャストする必要があります。

Mapから拡張されたカスタムクラスのようですが、クラスコードをチェックして、 "addLefChild"や "addRightChild"などのメソッドを検索することをお勧めします。

私はそれが役に立ちそうです。

+0

私は重要な点は不変部分だと思うので、私はOPが地図をクローン化し、その値を新しいインスタンスに 'put'を使って入れていると思います。 – AxelH

+0

BinaryTreeクラスのコードを共有すると、多分私はあなたに良い答えを与えることができます。 – kelmi92

+0

問題は私ができないことです... – AxelH

関連する問題