thingol 2 de out. de 2008
Só para completar o exercício que o Daniel está propondo, se alguém quiser procurar no Google, procure por “breadth-first traversal”.
victorwss 2 de out. de 2008
public class No {
private No esq ;
private No dir ;
private String nome ;
private boolean mostraNivel ( int nivel ) {
if ( nivel == 0 ) {
System . out . println ( nome );
return true ;
}
return ( esq != null ? esq . mostraNo ( nivel - 1 ) : false )
|| ( dir != null ? dir . mostraNo ( nivel - 1 ) : false );
}
public void mostraArvore () {
for ( int i = 0 ; mostraNivel ( i ); i ++ ) {}
}
}
Vê se esse código resolve. Crie os nós e popule os campos e então é só chamar o mostraArvore() da raiz.
Não testei, mas deve ser algo parecido com isso.
danieldestro 2 de out. de 2008
victorwss , o seu mostra apenas: 0 - 0L - 0LL
danieldestro 2 de out. de 2008
thingol , vendo esta URL: http://www.cs.bu.edu/teaching/c/tree/breadth-first/
Eu justamente havia pensando em usar uma estrutura extra (lista ou fila) para implementar, que é o que o link sugere.
Solução: http://www.sourcecodesworld.com/articles/java/java-data-structures/Tree_Traversals.asp
Código testado:
public class No {
public No esq ;
public No dir ;
public String nome ;
public void breadth_first (){
Queue & lt ; No & gt ; q = new LinkedList & lt ; No & gt ;();
No tmp ;
q . add ( this );
while ( ! q . isEmpty ()){
tmp = q . remove ();
if ( tmp . esq != null )
q . add ( tmp . esq );
if ( tmp . dir != null )
q . add ( tmp . dir );
System . out . print ( tmp . nome + " " );
}
}
}
public class Teste {
public static void main ( String [] agrs ) {
No n = new No ();
n . nome = "0" ;
n . esq = new No ();
n . esq . nome = "0L" ;
n . dir = new No ();
n . dir . nome = "0R" ;
n . esq . esq = new No ();
n . esq . esq . nome = "0LL" ;
n . esq . dir = new No ();
n . esq . dir . nome = "0LR" ;
n . dir . esq = new No ();
n . dir . esq . nome = "0RL" ;
n . dir . dir = new No ();
n . dir . dir . nome = "0RR" ;
n . dir . esq . esq = new No ();
n . dir . esq . esq . nome = "0RLL" ;
n . breadth_first ();
}
}
thingol 2 de out. de 2008
É isso aí.
O segredo de procurar no Google é lembrar-se do que já achou no Google
victorwss 2 de out. de 2008
danieldestro 2 de out. de 2008
thingol:
É isso aí.
O segredo de procurar no Google é lembrar-se do que já achou no Google :P
Pois é, eu não estava sabendo como procurar. Em português eu não achei nada com o que pesquisei. Em inglês eu não ia saber nunca. Mesmo assim eu não tinha achado nada.
danieldestro 2 de out. de 2008
renzonuccitelli 2 de out. de 2008
Em português o nome é busca em largura…
rafaeldiego 3 de out. de 2008
busca em APMPLITUDE - fila
busca em PROFUNDIDADE - pilha
danieldestro 3 de out. de 2008
RodyBr:
Legal, funcionou aqui.
Agora vou tentar ir mais além: na entrada do pgm, informar a qtde de nós e o pgm montar a árvore e fazer a varredura. :twisted:
public class Teste {
public static void main ( String [] args ) {
int num = Integer . parseInt ( args [ 0 ] );
ArvoreBinaria bin = ArvoreBinaria ();
for ( int i = 0 ; i < num ; i ++ ) {
bin . add ( num );
}
}
}