Caminhamento pré-ordem com pilha

2 respostas
F

Gostaria de fazer o caminhamento pré-ordem usando pilha, mas não consigo elaborar uma lógica para isso.

O que eu consegui fazer foi isso:
LinkedList<Nodo> pilha = new LinkedList<Nodo>(); 
	

	public void preOr(){
		pilha.add(raiz);  

		while (!pilha.isEmpty()) {  
			Nodo n = pilha.removeFirst();  
			System.out.println("No: " + n.getItem().getValor());  
			if (n.getNodoEsquerdo() != null){
				pilha.addFirst(n.getNodoEsquerdo()); 
			}
			else if(n.getNodoDireito() != null){
				pilha.addFirst(n.getNodoDireito());
			}
		} 
	}

O que eu não consigo é fazer ele voltar para o nó direito quando o esquerdo for nulo.

2 Respostas

mjohnatha

fr123,

eu já fiz um algoritmo desses em C.
Não me lembro muito bem, mas lembro que é necessário o uso de duas pilhas para fazê-lo corretamente.

Fica a dica.

F

É pode ser que com duas pilhas funcione. Mas não tenho idéia de como fazer.

Criado 3 de maio de 2011
Ultima resposta 3 de mai. de 2011
Respostas 2
Participantes 2