Прежде всего
if(this.getLeft() == null && n1.getLeft() == null && this.getRight() == null && n1.getLeft() == null) {
неверно, должно быть
if(this.getLeft() == null && n1.getLeft() == null && this.getRight() == null && n1.getRight() == null) {
Во-вторых, во втором и третьем if
с вы не сравниваете, чтобы увидеть, эквивалентны ли левый и правый узлы, соответственно. Например, во второй ветви вы проверяете, не являются ли правые поддеревья нулевыми, а левые поддеревья нулевыми. Но вы не проверяете, совпадают ли левые поддеревья.
В-третьих, похоже, вам не хватает фигурных скобок. Вот рабочая версия вашего кода.
public class BinaryTreeNode<T> {
private BinaryTreeNode<T> left;
private BinaryTreeNode<T> right;
private T data;
public BinaryTreeNode() {
this(null, null, null);
}
public BinaryTreeNode(T theData) {
this(theData, null, null);
}
public BinaryTreeNode(T theData, BinaryTreeNode<T> leftChild, BinaryTreeNode<T> rightChild) {
data = theData;
left = leftChild;
right = rightChild;
}
public BinaryTreeNode<T> getLeft() {
return left;
}
public void setLeft(BinaryTreeNode<T> left) {
this.left = left;
}
public BinaryTreeNode<T> getRight() {
return right;
}
public void setRight(BinaryTreeNode<T> right) {
this.right = right;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public boolean equals(Object o) {
if (o instanceof BinaryTreeNode<?>) {
BinaryTreeNode<?> n1 = (BinaryTreeNode<?>) o;
if (this.getLeft() == null && n1.getLeft() == null && this.getRight() == null && n1.getRight() == null) {
return this.data == n1.getData();
}
if (this.getRight() == null && n1.getRight() == null && this.getLeft() != null && n1.getLeft() != null) {
return this.data == n1.getData();
}
if (this.getLeft() == null && n1.getLeft() == null && this.getRight() != null && n1.getRight() != null) {
return this.data == n1.getData();
} else {
return false;
}
}
return false;
}
public static void main(String args[]) {
BinaryTreeNode<Integer> node15 = new BinaryTreeNode<Integer>(5);
BinaryTreeNode<Integer> node2 = new BinaryTreeNode<Integer>(5);
BinaryTreeNode<Integer> node1 = new BinaryTreeNode<Integer>(1);
System.out.println(node15.equals(node2));
System.out.println(node1.equals(node2) == false);
}
}