たとえば、私が持っていた場合
A
/ \
B C
/
D
次の追加は次のようにしたいと思います。
A
/ \
B C
/ \
D E
しかし、入力するアイテムの次の場所がどこになるかを検出するのに非常に苦労しています. 次のコードがあります。
public static BinaryTree<String> addToTree(BinaryTree<String> tree, String name) {
if (tree.getLeft() == null) {
BinaryTree<String> newTree = new BinaryTree<String>();
newTree.makeRoot(name);
tree.attachLeft(newTree);
}
else if (tree.getRight() == null) {
BinaryTree<String> newTree = new BinaryTree<String>();
newTree.makeRoot(name);
tree.attachRight(newTree);
}
// Both are non-null
else {
if (tree.getLeft().getLeft() == null || tree.getLeft().getRight() == null) {
tree.attachLeft(addToTree(tree.getLeft(), name));
}
else if (tree.getRight().getLeft() == null || tree.getRight().getRight() == null) {
tree.attachRight(addToTree(tree.getRight(), name));
}
}
return tree;
}
ただし、最大 3 レベルのツリーでしか機能しません。4 番目を追加しようとすると、何も追加されなくなります。
次のアイテムがnullの場所を見つけてそこに追加するように実装するにはどうすればよいですか?
またcheckNullity()
、ツリーを取得してその子が null かどうかを確認する方法も考えましたが、子の子を取得する方法もわかりませんでした。null の場所を見つけて、そこに追加したかったのです。
誰かがいくつかの入力を提供できますか?