Essa é pros feras! (Desafio de programação)
31/03/2004
0
[size=24:152145d54f]Árvores[/size:152145d54f]
Como todos vocês devem ter percebido durante o curso, árvores são fundamentais em vários ramos (!) da Computação. Este problema envolve a construção e percurso de árvores binárias.
[size=24:152145d54f]Tarefa[/size:152145d54f]
Dada uma árvore binária, você deve escrever um programa que produza um percurso ´em níveis´. Cada vértice de uma árvore contém um inteiro positivo que identifica o vértice unicamente. Em um percurso em níveis os vértices em um dado nível são visitados da esquerda para a direita, e todos os nós do nível k são visitados antes dos nós do nível k + 1. Por exemplo, para a árvore abaixo,
[img:152145d54f]http://www.afw.hpg.com.br/Contestos/ProvaOBI2000-Fase2-3.gif[/img:152145d54f]
um percurso em nível produz 5, 4, 8, 11, 13, 4, 7, 2, 1.
[size=24:152145d54f]Entrada[/size:152145d54f]
Na entrada uma árvore binária é especificada como uma seqüência de pares (v, p) onde v é o valor do vértice cujo caminho desde a raiz é descrito pelo vetor p. Os elementos de p têm valor 1 ou -1, representanto respectivamente um ramo direito ou um ramo esquerdo. O final do vetor p é indicado por um elemento de valor 0. Na árvore da figura acima, o vértice que contém 13 é especificado por (13, [1, -1, 0]) e o nó que contém 2 é especificado por (2, [-1, -1, 1, 0]). A raiz é especificada por (5, [0]), onde o vetor vazio representa o caminho da raiz até a própria raiz.
A entrada é composta de vários conjuntos de teste. A primeira linha de um conjunto de teste contém um número inteiro positivo N que indica o total de vértices da árvore. As N linhas seguintes contêm cada uma a descriçào de um vértice, no formato descrito acima. O final da entrada é indicado quando N = 0.
[size=24:152145d54f]Exemplo de Entrada[/size:152145d54f]
9
11 -1 -1 0
7 -1 -1 -1 0
8 1 0
5 0
4 -1 0
13 1 -1 0
2 -1 -1 1 0
1 1 1 1 0
4 1 1 0
3
10 0
20 -1 0
30 1 0
0
[size=24:152145d54f]Saída[/size:152145d54f]
Para cada conjunto de teste da entrada seu programa deve produzir três linhas. A primeira linha identifica o conjunto de teste, no formato ´Teste n´, onde n é numerado a partir de 1. A segunda linha deve conter os valores dos vértices na ordem do percurso em nível, conforme determinado pelo seu programa.
A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente.
[size=24:152145d54f]Exemplo de Saída[/size:152145d54f]
Teste 1
5 4 8 11 13 4 7 2 1
Teste 2
10 20 30
(esta saída corresponde ao exemplo de entrada acima)
[size=24:152145d54f]Restrições[/size:152145d54f]
0 ≤ N &8804; 10000 (N = 0 apenas para indicar o fim da
entrada)
0 &8804; valor de um vértice &8804; 10000
Dica: Observem uma propriedade das ávores binárias.
Beppe
Posts
31/03/2004
Beppe
31/03/2004
Keitarosan
31/03/2004
Lucas Silva
31/03/2004
Otto
:lol: :lol: :lol:
to zuando... no stress.. hehehe.. putz, nao entendi nadica de nada...
31/03/2004
Fabio.hc
daí para baixo num entendi mais nada ... :cry:
31/03/2004
Beppe
ow, na faculdade as coisas são do tipo ´faça um catálogo de CDs´(ao menos no começo...)
Isso é uma tarefa, como, digamos, de gincana, ou olímpiada, só que com o auxílio do computador... :idea:
Mas caras, tá tão difícil assim? :o Com mais tempo eu posto a resposta, é beeeeeeeeeem simples... 8)
31/03/2004
Keitarosan
Dificil? bom, si eh dificil eu nom sei, afinal nom consegui intendeh ainda T-T
Depois vou reler pela terceira veix pra ve si minha mente si ´alumia´ :P :P
31/03/2004
Fabio.hc
Não coloca a resposta ainda, deixa eu tentar resolver esta bagaça neste fim de semana.
31/03/2004
Nildo
É claro, só se a gente entender :oops:
31/03/2004
Paulo_amorim
eu soh nao entendi essa parte :lol: :lol: :lol: :lol:
Nao entendi nada do que foiexplicado!!!
31/03/2004
Beppe
Amanhã tô com tempo livre, então vou tentar explicar melhor, flw?
01/04/2004
Beppe
- Quem naum sabe (ainda) o que é uma árvore binária(AB), nem adianta tentar resolver :(
- O problema especifíca uma árvore binária apenas, sem nenhuma ordenação
- Escolha a estrutura de dados certa: essa escolha é fundamental, após isso, é sem mistério(a própria escolha é sem mistério)
- Observe as restrições finais, isso ajuda na hora de implementar
Quando a entrada de dados:
- é servido como entrada a descrição de uma AB: o número de nós, seguido da descrição(valor e caminho até a raíz) dos nós, um nó por linha
Por exemplo, o nó (13 1 -1 0), indica que o valor 13 é o filho esquerdo, do filho direito da raíz. (vide figura no topo)
Acho que agora ficou mais claro né? :wink: :)
01/04/2004
Henry
To fora.........
03/04/2004
Beppe
Clique aqui para fazer login e interagir na Comunidade :)