In your example you create 10 million unique strings. Because these are unique strings, right away this means we should expect at least 10 million arrays. You can expect that these trees may reduce the lengths of the arrays stored, but not necessarily the number of arrays. They can reduce the number of arrays too, but this only occurs when strings are not unique. (This applies when ByteArrayNodeFactory is used. It's a different case when CharSequenceNodeFactory is used.)
In your example, those strings share a common prefix "alper". This shared prefix will be stored once. There will be many other shared prefixes after "alper" between subsets of the strings too, as many of the numbers you append will also share common prefixes. Those shared prefixes will each be stored once. However then the question is where will the bytes for the trailing characters of each string, which do not share prefixes with the other strings be stored? Those trailing characters will be stored in separate byte arrays in leaf nodes.
Forgive me if I've misunderstood your example. I'm happy to help if you could clarify.