public void Balance() {
// System.out.Print("Before root splitchar = "); System.out.Println(sc[root]);
int i = 0, n = length;
string[] k = new string[n];
char[] v = new char[n];
Iterator iter = new Iterator(this);
while (iter.HasMoreElements()) {
v[i] = iter.Value;
k[i++] = (string)iter.NextElement();
}
Init();
InsertBalanced(k, v, 0, n);
// With uniform letter distribution sc[root] should be around 'm'
// System.out.Print("After root splitchar = "); System.out.Println(sc[root]);
}