This my code please tell me what is wrong in my code and correct

import java.util.*;
public class Main {
private class Node{
Node left;
Node right;
int data;
}
private Node root;
public void constract(int ar[]){
this.root=constract(ar,0,ar.length);
}
private Node constract(int ar[],int low,int high) {
if(low>=high)
{
return null;
}
int mid=(low + high)/2;
Node nn=new Node();
nn.data=ar[mid];
nn.left=constract(ar,low,mid);
nn.right=constract(ar,mid+1,high);
return nn;
}
public void preOrder() {
preOrder(this.root,1);
}
private void preOrder(Node node,int temp) {
if(node==null)
return;
if(temp!=1){
System.out.print(" ");

			}
			temp++;
		System.out.print(node.data);
		preOrder(node.left,temp);
		preOrder(node.right,temp);
	}
   static Scanner scn=new Scanner(System.in);
   public static void main(String[] args) {
	   Main BST=new Main();
	   int t=scn.nextInt();
	   while(t!=0) {
		   int n=scn.nextInt();
		   int ar[]=new int[n];
		   for(int i=0;i<n;i++) {
			   ar[i]=scn.nextInt();
		   }
		   BST.constract(ar);
		   BST.preOrder();
		   t--;
	   }
	   
   }

}

@sksumitkumardiwaker,
https://ide.codingblocks.com/s/230061 corrected code.

I have added comments on the corrected lines for your reference.