THE FOLLOWING CODE IS PASSING ONLY TWO TEST CASES. I AM UNABLE TO FIND WHAT IS THE ERROR. PLEASE HELP ME.
import java.util.*;
public class Main
{
static class Node
{
int data;
Node left, right;
Node(int data)
{
this.data = data;
this.left = null;
this.right = null;
}
}
Node root;
HashMap<Integer,Integer> map=new HashMap<>();
public Node insertLevelOrder(ArrayList arr, Node root,int i,int path)
{
if (i < arr.size()) {
Node temp = new Node(arr.get(i));
root = temp;
if(temp.data!=(-1))
map.put(path,temp.data);
root.left = insertLevelOrder(arr, root.left,2 * i + 1,path-1);
root.right = insertLevelOrder(arr, root.right, 2 * i + 2,path+1);
}
return root;
}
public void display(Node node)
{
String str="";
if(node.left!=null)
str=str+node.left.data+"=>";
else
str=str+"END=>";
str=str+node.data;
if(node.right!=null)
str=str+"<=" + node.right.data;
else
str=str+"<=END";
System.out.println(str);
if(node.left!=null)
this.display(node.left);
if(node.right!=null)
this.display(node.right);
}
public static void main(String args[]) throws Exception
{
Main tree = new Main();
Scanner sc=new Scanner(System.in);
ArrayList<Integer> list=new ArrayList<>();
int node=0,nnode=0;
while(nnode!=(node+1))
{
int n=sc.nextInt();
if(n==-1)
{
list.add(n);
nnode++;
}
else
{
list.add(n);
node++;
}
}
tree.root=tree.insertLevelOrder(list,tree.root,0,0);
ArrayList<Integer> ans=new ArrayList<>(tree.map.keySet());
ans.sort(null);
for(int k=0;k<ans.size();k++)
System.out.print(tree.map.get(ans.get(k))+" ");
}
}