What is wrong in this code sir , ans is not accepting , in compiler its giving correct ans

import java.util.*;
public class Main {
public static void main(String[] args) {

	Scanner sc=new Scanner(System.in);
	int t=sc.nextInt();
	
	for(int i=1 ; i<=t ; i++){
		
		int n=sc.nextInt();
		int pre[]=new int[n];
		int in[] = new int[n];
		for(int j=0 ; j<n ; j++) {
			pre[j]=sc.nextInt();
			in[j]=pre[j];
		}
		
		Arrays.sort(in);
		
		int k1=sc.nextInt();
		int k2=sc.nextInt();
		
		Main m=new Main();
		BST bt = m.new BST(in);

// BST bt = m.new BST(pre , in);

		System.out.print("# Preorder : ");
		bt.preOrder();

// for(int j=0 ; j<n ; j++)
// System.out.print(pre[j]+" ");

		System.out.print("# Nodes within range are : ");
		bt.inRange(k1 , k2);

		System.out.println();
	}
	
}

public class BST {

	private class Node{
		int data;
		Node left=null;
		Node right=null;
	}
	

	private Node root;
	

	public BST (int [] inorder) {
		this.root=construct(inorder , 0 , inorder.length-1);
	}
	private Node construct(int [] inorder , int start , int end) {
	
		if(start>end) return null;
		if(start==end) {
			Node base = new Node();
			base.data=inorder[start];
			return base;
		}
		
		int mid=(start+end)/2;
		
		Node node = new Node();
		
		node.data=inorder[mid];
		
		node.left=construct(inorder , start , mid-1);
		
		node.right=construct(inorder , mid+1 , end);
		
		return node;
		
	}


	BST(int [] pre , int [] in){
		this.root=pre_in_generate(pre , 0 , pre.length-1 , in , 0 , in.length-1);
	}
	private Node pre_in_generate(int [] pre , int preS , int preE , int [] in , int inS , int inE) {
		
		if(preS>preE || inS>inE)
			return null;
	
		int i=inS;
		while(i<inE) {
			if(pre[preS]==in[i])
				break;
			i++;
		}
		
		Node curr = new Node();
		
		curr.data = in[i];
		
		curr.left = pre_in_generate(pre , preS+1 , preS+(i-inS) , in , inS , i-1);
		
		curr.right = pre_in_generate(pre , preS+(i-inS)+1 , preE , in , i+1 , inE);
		
		return curr;
		
	}
	
	
	public void preOrder() {
		this.preOrder(this.root);
		System.out.println();
	}
	private void preOrder(Node node) {
		
		if(node==null) return;
		
		System.out.print(node.data+" ");
		
		preOrder(node.left);
		
		preOrder(node.right);
		
	}

	
	public void display() {
		display(this.root);
	}
	private void display(Node node) {
		
		if(node==null) return;
		
		String s="";
		
		if(node.left!=null)		s=s + node.left.data + " => ";
		else	s=s+" ... => ";
		
		s = s+node.data;
		
		if(node.right!=null)    s=s+" <= "+node.right.data;
		else	s=s+" <= ... ";
		
		System.out.println(s);
		
		if(node.left!=null)
			display(node.left);
		
		if(node.right!=null)
			display(node.right);
		
	}
	
	
	public void inRange(int k1 , int k2) {
		this.inRange(this.root , k1 , k2);
	}
	private void inRange(Node node , int k1 , int k2) {
		
		if(node==null) return;
		
		if(node.data<k1)
			inRange(node.right , k1 , k2);
		
		if(node.data>k2)
			inRange(node.left , k1 , k2);
		
		if(node.data<=k2 && node.data>=k1) {
			
			inRange(node.left , k1 , k2);
			
			System.out.print(node.data+" ");
			
			inRange(node.right , k1 , k2);
		}
		
	}
	

}		

}

Hey @Himanshu-Jhawar-2273952536067590

Arrays.sort(in);// this is wrong because root Node is change

if Nothing is mentioned Add Node Manually