public class BinaryTree<T> {
public T data;
public BinaryTree<T> left, right;
public BinaryTree(T data) {
this.data = data;
}
public BinaryTree(T data, BinaryTree<T> left, BinaryTree<T> right) {
this.data = data;
this.left = left;
this.right = right;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BinaryTree<?> that = (BinaryTree<?>) o;
if (data != null ? !data.equals(that.data) : that.data != null) return false;
if (left != null ? !left.equals(that.left) : that.left != null) return false;
return right != null ? right.equals(that.right) : that.right == null;
}
}