public void procura(T valor, No raiz) {
int nivel = 0;
while (raiz != null && raiz.data != valor) {
if (valor.compareTo(data) == 1) {
raiz = raiz.direito;
} else {
raiz = raiz.esquerdo;
}
nivel++;
}
if (raiz == null) {
System.out.println("\nNó " + valor + " não encontrado!");
} else {
System.out.println("\nO nó " + valor + " está no nível " + nivel);
}
}
Me ajudem a refatorar esse código por favor!
1 Resposta
Oi @Ana_Paula_Pereira1,
o que você quer dizer com refatorar?
Esse é um algoritmo de busca em árvore ,aparentemente, e o jeito mais comum de se fazer isso é utilizando um algoritmo recursivo. Segue exemplo simples feito em Java:
public static void main(String[] args) {
No root = new No("root", 1);
No child1 = new No("child1", 2);
No child1_1 = new No("child1_1", 3);
No child1_2 = new No("child1_2", 4);
child1.addChild(child1_1);
child1.addChild(child1_2);
No child2 = new No("child2", 5);
No child2_1 = new No("child2_1", 6);
No child2_2 = new No("child2_2", 7);
child2.addChild(child2_1);
child2.addChild(child2_2);
root.addChild(child1);
root.addChild(child2);
No no = root.search(7);
if (no == null) {
System.out.println("Not found");
} else {
System.out.println("Node found: " + no.getName());
}
}
public static class No<T> {
private String name;
private T value;
private final List<No> children;
public No(String name, T value) {
this.name = name;
this.value = value;
children = new ArrayList<>();
}
public void addChild(No child) {
children.add(child);
}
public T getValue() {
return value;
}
public boolean isLeaf() {
return children.isEmpty();
}
public No search(T value) {
if (value == null) {
return null;
}
//If equals stop looking for
if (Objects.equals(value, getValue())) {
return this;
}
No nodeFound;
//Try to find in children
for (No no : children) {
if ((nodeFound = no.search(value)) != null) {
return nodeFound;
}
}
return null;
}
@Override
public String toString() {
return name;
}
public String getName() {
return name;
}
}
Espero que ajude.
Criado 21 de outubro de 2017
Ultima resposta 21 de out. de 2017
Respostas 1
Participantes 2