Desenvolvimento

28 out, 2013

Desafio de programação – Árvores binárias

Publicidade

Olá, pessoal. Bem-vindos ao primeiro desafio de programação. Todos os meses eu publicarei um desafio de lógica, arquitetura de software, UML, matemática aplicada, entre outros.

Neste primeiro desafio, abordarei um item da teoria de grafos, a tão conhecida, ou não, árvore binária.

Hoje, a maioria dos programadores foca em design patterns, frameworks e em aprendizagem de várias linguagens, mas se esquecem de melhorar os itens primordiais para serem bons programadores: lógica de programação, matemática e raciocínio rápido para resolução de problemas.

A ideia do desafio de programação é melhorar justamente o pensamento matemático e lógico, além de fazer você raciocinar um pouco fora da caixa.

Mas o que são árvores binárias?

Em teoria dos grafos, uma árvore binária é definida como um grafo acíclico, conexo, dirigido e em que cada nó não tem grau maior que 2, sendo composta por:

  • root: primeiro nó e a base da árvore;
  • path: nada mais do que a indicação do caminho entre os nós;
  • nodes: nós da árvore contendo somente dois filhos;
  • child ou leaf: trata-se de um nó final e sem filhos;

Abaixo, segue um modelo da estrutura:

Árvore Binária
Árvore Binária Balanceada

Bom. Qual é o desafio, então?

Neste primeiro desafio, você deve criar uma solução para adicionar, atualizar, consultar, reordenar e deletar nós em uma árvore binária. Cada nó deve ter uma key do tipo integer e um valor do tipo String, além de suas respectiva filiações.

 Nível de dificuldade: intermediário

 Tempo em que foi criado: 60 minutos

 Tempo estimado: 100 minutos

Deadline para o envio das soluções: 11/11 às 20h

Premiação: Entre todos que acertarem será feito um sorteio. O sorteado ganhará uma cortesia para qualquer curso do iMasters Pro. Os demais acertadores ganharão um super desconto para qualquer um dos cursos do iMasters Pro.

O resultado será divulgado aqui mesmo no iMasters, no dia 18 de novembro.

Regras

  1. Cada participante só pode submeter uma única proposta.
  2. O participante é PROIBIDO de usar frameworks, micro-frameworks ou métodos nativos da linguagem que já resolva o problema proposto.
  3. O programa deve ser salvo em um arquivo TXT.
  4. O arquivo TXT deverá vir com o nome do participante, ex.: “camilo-melo.txt”.
  5. Não será aceito zip, nem outros tipo de arquivo compactado.
  6. Para participar, o interessado deve mandar o desafio feito para o e-mail camilo.melo@yahoo.com.br. O e-mail será respondido em até 1 dia.
  7. O e-mail precisa ser enviado com o assunto “Desafio de programação 1”.
  8. O deadline do desafio é dia 11 de novembro, segunda-feira, às 20h.
  9. Por favor, não divulgue a solução na Internet até terminar o desafio. Arquivos iguais serão descartados.

Let’s Rock!