例如,如果我有
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;
}
但它只适用于最多三层树。如果我尝试添加第四个,它不再添加任何内容。
我该如何实现它,以便它找出下一个项目为空的位置,然后将其添加到那里?
我也想过有一个checkNullity()
方法,我会拿一棵树,检查它的孩子是否为空,但我也很难弄清楚如何得到孩子的孩子。我想找到它为空的位置,然后将其添加到那里。
谁能提供一些意见?