Ir para o conteúdo
AJBM

levelOrder em Array

Mensagens Recomendadas

AJBM

Boas!

Eu tenho de implementar o levelOrder num array, eu já fiz isto..

public void levelOrder(int node, ArrayUnorderedList<T> tempList) throws Exception {
	QueueADT<T> nodes = new LinkedQueue<T>();

	T elementRemoved = null;
	nodes.enqueue(tree[node]);
	while (!nodes.isEmpty()) {
		elementRemoved = nodes.dequeue();
		if (elementRemoved != null) {
			tempList.addToRear(elementRemoved);
			if (tree[node * 2 + 1] != null && node * 2 + 1 < tree.length) {
				nodes.enqueue(tree[node * 2 + 1]);
			}
			if (tree[(node + 1) * 2] != null && (node + 1) * 2 < tree.length) {
				nodes.enqueue(tree[(node + 1) * 2]);
			} else {
				tempList.addToRear(null);
			}
		}
	}

}

Mas entra em ciclo infinito e ainda não descobri porque?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AJBM

Já não entra em ciclo infinito, mas não esta a devolver os elementos todos da árvore.

public void levelOrder(int node, ArrayUnorderedList<T> tempList) throws Exception {
	QueueADT<T> nodes = new LinkedQueue<T>();
	T elementRemoved = null;
	nodes.enqueue(tree[node]);
	while (!nodes.isEmpty()) {
		elementRemoved = nodes.dequeue();
		if (elementRemoved != null) {
			tempList.addToRear(elementRemoved);
			if (tree[node * 2 + 1] != null && node * 2 + 1 < tree.length) {
				nodes.enqueue(tree[node * 2 + 1]);

			}
			if (tree[(node + 1) * 2] != null && (node + 1) * 2 < tree.length) {
				nodes.enqueue(tree[(node + 1) * 2]);

			}

		} else {
			tempList.addToRear(null);
		}
		node++;
	}
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.