我需要找到一个给定的节点,然后返回它,如果它找不到它,则返回null。
我试过这个,但它返回null:
public NodoN<T> buscarNodo(T dato, NodoN<T> nodo){
if(nodo != null) {
// Root is dummy and is null
if (nodo.dato != null && nodo.dato.equals(dato)){
return nodo;
} else {
int cantHijos = nodo.nodos.size();
ArrayList<NodoN<T>> nodosHijos = nodo.nodos;
NodoN<T> nodoEncontrado;
for (int i = 0; i < cantHijos; i++) {
nodoEncontrado = buscarNodo(dato, nodosHijos.get(i));
if(nodoEncontrado.dato.equals(dato)){
return nodo;
}
}
}
}
return null;
}
在查看调试器时,它正确找到了我想要的那个,但后来继续循环并返回null。
NodoN班:
import java.util.ArrayList;
public class NodoN<T> {
T dato;
Integer tMax;
ArrayList<NodoN<T>> nodos;
public NodoN(T dato, Integer tMax){
this.dato = dato;
this.tMax = tMax;
nodos = new ArrayList<NodoN<T>>();
}
public void agregar(NodoN<T> nodo){
if (nodos.size()<tMax){
nodos.add(nodo);
}else{
nodos.get(0).agregar(nodo);
}
}
String inOrder(boolean ingnorarRaiz){
String ret = "";
if (!ingnorarRaiz){
ret =ret + dato.toString() + ",";
}
for (int i=0;i<nodos.size();i++){
ret = ret + nodos.get(i).inOrder(false);
}
return ret;
}
}