Question: i have a BST where i insert keys from 1...n randomly *(every permutation is done with 1/n! probability)*.
my question is why the resulting trees are not *uniform* even if the permutation are *uniform* ?

Answer: 
A lot depends on the implementation of the tree. Is it self balancing? Consider the simple trees of 1 2 3 and 3 2 1

```
Very simple tree:
add 1

1

add 2

1
 \
  2

add 3

 1
  \
   2
    \
     3

```

then 3 2 1

add 3

```
3

add 2

  3
 /
2

add 1

     3
    /
   2
  / 
 1

```

Now do 2 3 1

```
2

2
 \
  3

  2
 / \
1   3

```
a binary search tree is not just a uniform search tree... a tree is built in the order in which new values are saved in it. as glowcoder already showed, that doesnt guarantee uniformity... 

having a uniform distribution of random numbers does not guarantee an order of values that is optimal to build a binary tree

to have a minimum effort search via a binary tree, the tree must be rebuild regularly. That usually happens in non-business-hours, where an algorithm may read the whole tree into a linked list and then, from that list, builds a new tree with optimum uniformity