Fazer diagrama de classe com Padroes de Projeto Árvores

Salve galera do GUJ!

Estou trabalhando em um aplicativo que o foco vai ser aplicar a estrutura de árvore. A ideia é trabalhar com Árvores Binárias de Busca, AVL, Preto-e-Vermelho e Heap. Quero fazer aplicando padrões de projeto e tentar desacoplar ao máximo todo o código. Sei os conceitos e aplicação de alguns padrões de projeto mas estou perdido sobre a melhor forma de aplicá-los.
Gostaria da ajuda de vocês para me orientar como fazer de tal forma que possa adicionar quantas estruturas de árvore forem possíveis, seguindo uma base comum. Estou sem saber se crio uma interface pra todas ou uma para cada árvore, se crio uma classe de inserção, por exemplo, com os métodos de inserção de todas as árvores ou se faço uma classe com inserção, remoção, e busca para cada árvore(apesar de essa última repetir muito código). Enfim, se for possível dar um exemplo de quais classes criar ou sugestão de um diagrama de classe para a solução, qualquer coisa!

Desculpem se parece ser uma coisa simples mas estou realmente perdido…

Obrigado!