import java.util.*;
public class Rank {
Node root = null; //整棵树的根
public int[] getRankOfNumber(int[] A, int n) {
// write code here
int[] res = new int[n];
for(int i=0;i<n;i++)
res[i] = helper(A[i]);
return res;
}
public int helper(int val){
if(root==null)
root = new Node(val);
else
root.insert(root,val);
return root.getCnt(root,val);
}
class Node{
Node left,right; //左右孩子的指针
int leftCnt = 0;
int val;
Node(int val){
this.val = val;
}
public void insert(Node root,int val){
if(val <= root.val){
if(root.left!=null)
insert(root.left,val);
else
root.left = new Node(val);
root.leftCnt++;
}
else{
if(root.right!=null)
insert(root.right,val);
else
root.right = new Node(val);
}
}
public int getCnt(Node root,int val){
if(val==root.val)
return root.leftCnt;
else if(val < root.val)
return getCnt(root.left,val);
else if(val > root.val)
return root.leftCnt+1+getCnt(root.right,val);
return 0;
}
}
}