私はバイナリツリーの新機能で、シンプルなゲームのための追加メソッドを扱っています。現在、このメソッドは、新しいノードを追加するたびにルートノードの子ノードを置き換えます。ルートノードの最初の2つの子ノードを置き換えるのではなく、ツリー全体に新しいノードを追加するにはどうすればよいですか?これはこれまで私が持っているものです:最初の2つの子ノードを超えてノードを追加するには、どのようにしてBSTの追加メソッドを取得できますか?
public boolean add(User friend) {
User node = friend;
if (root == null) {
root = node;
return true;
}
if (node.key() < root.key()) {
if(root.left == null) {
root.setLeft(node);
}
} else if (node.key() > root.key()) {
if(root.getRight() == null) {
root.setRight(node);
}
}
return true;
}
[こちら](http://algorithms.tutorialhorizon.com/binary-search-tree-complete-implementation/)を参考にしてください。 –
このツリーは 'User'クラスの一部であるようです。別の 'BinarySearchTree'クラスを作成し、 'User'クラスに' private BinarySearchTree friends'フィールドを持たせるほうがよいでしょう。 'User :: beFriend'は単に' friends.add'を呼び出します。 –
Oebele
@ VladK。そのガイドはよく木を説明します。 – girthquake