Árvore AVL com objetos?

Alguém tem um algoritmo de uma árvore AVL binária com inserção de objetos, e ordenação a partir de uma propriedade do tipo String deste objeto ?

Exemplo:

public class Pessoa {
String nome;
String sobrenome;
}

Deve inserir varios objetos pessoa e ordena-los a partir do sobrenome…

http://users.cis.fiu.edu/~weiss/dsaajava/code/DataStructures/AvlTree.java