Arvores

Implemente funções para:
1. Inserir um elemento n em uma árvore binária de busca.
2. Percorrer a árvore, imprimindo os valores dos nós, segundo a estratégia em ordem.
3. Idem, segundo a estratégia pré-ordem.
4. Idem, segundo a estratégia pós-ordem.
5. Verificar se um certo valor n está presente na árvore.
6. Retornar o maior valor presente em uma árvore.
7. Retornar o menor valor presente em uma árvore.
8. Retornar a média dos valores presentes em uma árvore.
9. Retornar o número de NULLs presentes em uma árvore.
10. Retornar a soma dos valores dos nós.
11. Retornar o número de nós cujos valores são múltiplos de três.
12. Retornar o número de nós de uma árvore.
13. Retornar o número de folhas de uma árvore.
14. Retornar a altura de uma árvore.
15. Remover um nó n de uma árvore binária de busca.
16. Verificar se uma árvore é estritamente binária (uma árvore é estritamente binária
caso todos os seus nós possuam 2 filhos ou sejam folhas).
17. Comparar duas árvores, retornando 1 caso sejam iguais e 0 caso sejam diferentes.
18. Comparar duas árvores, retornando 1 caso sejam similares e 0 caso contrário (duas árvores são similares caso possuam a mesma estrutura, independentemente dos valores dos nós).
19. Comparar duas árvores, retornando 1 caso sejam simétricas e 0 caso contrário (duas árvores são simétricas, caso uma seja igual à imagem da outra refletida em um espelho).
20. Dadas duas árvores, criar uma terceira, cujos valores dos nós representem a união dos valores encontrados nas duas árvores de entrada.
21. Dadas duas árvores, criar uma terceira, cujos valores dos nós representem a intersecção dos valores encontrados nas duas árvores de entrada.
22. Escolher alguns dos algoritmos gerados e fazer testes de mesa, a partir de árvores de sua escolha.