Árvores binárias de busca - inserção

Considere uma árvore binária de busca definida por células

typedef struct no {
   int chave;
   struct no *esq, *dir;
} no;

Sua tarefa nesse exercício é implementar a operação de inserção na numa árvore binária de busca com raiz r. Para tanto, você deve submeter um arquivo contendo apenas:

  1. Os #include necessários para execução das instruções utilizadas no seu código.

  2. A definição da struct no.

  3. Uma função que insere o valor xx na árvore binária de busca. O protótipo desta função deve ser:

no *inserir (no *r, int x);
Sua função de inserção deve garantir que chaves repetidas não sejam inseridas na árvore.