why it give wrong answer??
import java.util.*;
class Tree {
public static class Node
{
Node left;
Node right;
int data;
public Node(int d)
{
data=d;
}
}
private Node root;
private int size;
public Tree(int []arr)
{
this.root=bst(arr,0,arr.length-1);
}
public static Node bst(int []arr,int l,int h)
{
if(l>h)
return null;
int mid=(l+h)/2;
Node n=new Node(arr[mid]);
n.left=bst(arr,l,mid-1);
n.right=bst(arr,mid+1,h);
return n;
}
public void print(int k1,int k2)
{
this.printrange(this.root,k1,k2);
}
public void display()
{
this.preorder(this.root);
}
public static void preorder(Node node )
{
if(node==null)
return;
System.out.print(node.data+" ");
preorder(node.left);
preorder(node.right);
}
public static void printrange(Node node ,int k1,int k2)
{
if(node==null)
return;
printrange(node.left,k1,k2);
if(node.data>=k1 && node.data<=k2)
System.out.print(node.data+" ");
printrange(node.right,k1,k2);
}
}
public class main {
public static void main(String args[]) {
Scanner kb=new Scanner(System.in);
int t=kb.nextInt();
while(t-->0)
{
int n=kb.nextInt();
int []arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=kb.nextInt();
Arrays.sort(arr);
Tree tr=new Tree(arr);
int k1=kb.nextInt();
int k2=kb.nextInt();
tr.display();
System.out.println("");
tr.print(k1,k2);
System.out.println("");
}
}
}