Ваша проблема в вашем основном методе:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
Node root = null;
while (t-- > 0) {
int data = scan.nextInt();
root = insert(root, data);
}
scan.close();
preOrder(root);
}
Вы инициализируете Node root = null
, и при первом входе в цикл while root по-прежнему будет нулевым при передаче его методу вставки: root = insert(root, data);
public static Node insert(Node root, int data) {
Node inserter = new Node(data);
Node temp = root;
while (true) {
if (inserter.data <= temp.data) {
...
Таким образом, при первом вводе метода вставки значение temp будет равно нулю, давая нулевой указатель на temp.data
в строке if (inserter.data <= temp.data)
.