Я некоторое время работал над этим кодом, но безуспешно. Я понимаю, что мне нужно пропустить мое дерево с помощью этого метода, но я не уверен, как это сделать.
Я думаю, что мой алгоритм верен, но он продолжает говорить мне "ноль", независимо от того, что я положил в. Любая обратная связь может помочь, я думаю, что она возвращает нуль, потому что я не знаю, как передать дерево через метод.
Ниже мой метод find2 должен использовать дерево, созданное моим методом add2. найти выбранный узел. Это также включает мой основной метод.
Вот код:
public boolean add2(E item) {
root = add2(root, item);
return addReturn;
}
private Node<E> add2(Node<E> localRoot, E item){
if(localRoot == null) {
//Adding item if tree is empty...
addReturn = true;
return new Node<>(item);
} else if (item.compareTo(localRoot.data) == 0) {
//Returning item if equal to root...
addReturn = false;
return localRoot;
} else if (item.compareTo(localRoot.data) < 0) {
//Adding item to right side of tree if less than the root...
localRoot.right = add(localRoot.right, item);
return localRoot;
} else {
//Adding item to left side of tree if grater than the root...
localRoot.left = add(localRoot.left, item);
return localRoot;
}
}
//wrapper method
public E find2(E target) {
return find2(root, target);
}
//recursive method
private E find2(Node<E> localRoot, E target) {
if(localRoot == null) {
return null;
}
int compResult2 = target.compareTo(localRoot.data);
if(compResult2 == 0) {
return localRoot.data;
} else if (compResult2 < 0) {
return find2(localRoot.right, target);
} else {
return find2(localRoot.left, target);
}
}
public class BinarySearchTreeTest {
public static void main(String[] args) {
//Object creation
BinarySearchTree<Integer> tree = new BinarySearchTree<>();
//Tree building...
tree.add2(50);
tree.add2(70);
tree.add2(80);
tree.add2(60);
tree.add2(30);
tree.add2(40);
tree.add2(20);
//Output tree
System.out.println("\nThe built binary search tree:");
System.out.println("\n" + tree.toString());
System.out.println("\nSearch the node with data 60: " + tree.find2(60));
System.out.println("Search the node with data 65: " + tree.find2(65));
System.out.println("Search the node with data 20: " + tree.find2(20));
System.out.println("Search the node with data 25: " + tree.find2(25));
}
}