private void RecorridoPreOrdenInterno(RecorridoDelegate <T> _recorrido, Nodo <T> _actual) { if (_actual != null) { _recorrido(_actual); RecorridoEnOrdenInterno(_recorrido, _actual.izquierdo); RecorridoEnOrdenInterno(_recorrido, _actual.derecho); } }
public void recorrer_interno(Nodo <T, K> nodo_start, RecorridoDelegate <T, K> recorrido) { if (nodo_start != null) { for (int j = 0; j <= nodo_start.elementos.Count - 1; j++) { recorrido(nodo_start.elementos.ElementAt(j).Value); } for (int j = 0; j <= nodo_start.hijos.Count - 1; j++) { recorrer_interno(nodo_start.hijos.ElementAt(j).Value, recorrido); } } }
public void recorrer_interno(Nodo <T, K> nodo_start, RecorridoDelegate <T, K> recorrido) { if (nodo_start != null) { for (int i = 0; i <= nodo_start.elementos.Count - 1; i++) { if (nodo_start.hijos.Count != 0) { recorrer_interno(nodo_start.hijos.ElementAt(i).Value, recorrido); } recorrido(nodo_start.elementos.ElementAt(i).Value); } if (nodo_start.hijos.Count != 0) { recorrer_interno(nodo_start.hijos.ElementAt(nodo_start.hijos.Count - 1).Value, recorrido); } } }
public void PreOrden(RecorridoDelegate <T> _recorrido) { RecorridoPreOrdenInterno(_recorrido, Raiz); }
public void recorrer(RecorridoDelegate <T, K> recorrido) { recorrer_interno(raiz, recorrido); }
public void PostOrden(RecorridoDelegate <T> _recorrido) { RecorridoPostOrdenInterno(_recorrido, _raiz); }
public void EnOrden(RecorridoDelegate <T, K> _recorrido) { RecorridoEnOrdenInterno(_recorrido, Raiz); }