320 likes | 496 Views
Estructuras de datos y algoritmos. Oscar Bedoya. oscarbed@eisc.univalle.edu.co http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C. Árboles. Caso de implementación: Árboles de búsqueda binaria. Arboles. NodoArbol. izquierdo. dato. derecho. Arboles.
E N D
Estructuras de datos y algoritmos Oscar Bedoya. oscarbed@eisc.univalle.edu.co http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C.
Árboles Caso de implementación: Árboles de búsqueda binaria
Arboles NodoArbol izquierdo dato derecho
Arboles NodoArbol
Arboles NodoArbol raíz
Arboles NodoArbol raíz
Arboles NodoArbol raíz
Árboles public class NodoArbol{ NodoArbol izquierdo; int dato; NodoArbol derecho; public NodoArbol (int d) { dato = d; izquierdo = derecho = null; }
Arboles NodoArbol
Arboles NodoArbol Si d es menor que dato, e izquierdo es null, al campo izquierdo le asigno el nodo a insertar
Arboles NodoArbol Si d es menor que dato, e izquierdo es null, al campo izquierdo le asigno el nodo a insertar
Arboles NodoArbol
Arboles NodoArbol Si d es menor que dato, e izquierdo es diferente de null, el problema se reduce ahora a insertar el nodo con el dato d, en el nodo con dato1
Arboles NodoArbol Si d es menor que dato, e izquierdo es diferente de null, el problema se reduce ahora a insertar el nodo con el dato d, en el nodo con dato1
Arboles NodoArbol
Arboles NodoArbol Si d es mayor que dato, y derecha es null, al campo derecha le asigno el nodo a insertar
Arboles NodoArbol Si d es mayor que dato, y derecha es null, al campo derecha le asigno el nodo a insertar
Arboles NodoArbol
Arboles NodoArbol Si d es mayor que dato, y derecho es diferente de null, el problema se reduce ahora a insertar el nodo con el dato d, en el nodo con dato1
Arboles NodoArbol Si d es mayor que dato, y derecho es diferente de null, el problema se reduce ahora a insertar el nodo con el dato d, en el nodo con dato1
Árboles public void insertar (int d) { if (d < dato) { if (izquierdo == null) izquierdo = new NodoArbol(d); else izquierdo.insertar(d); } else if (d > dato) { if (derecho == null) derecho = new NodoArbol(d); else derecho.insertar(d); } }
Arboles ArbolBinario raiz Al crear el árbol binario, se crea el nodo raiz con valores null
Arboles Árbol binario (insertar con raíz vacía) raíz Como la raíz tiene null, a la raíz le asigno el nodo con el nuevo dato
Arboles Árbol binario (insertar con raíz vacía) raíz Como la raíz tiene null, a la raíz le asigno el nodo con el nuevo dato
Arboles Árbol binario (insertar con raíz no vacía) raíz Como la raíz tiene un dato, se deben examinar las posibilidades de insertar el nuevo nodo a la izquierda o a la derecha, esto lo hace el método insertar implementado para cada nodo
Árboles public class ArbolBinario{ private NodoArbol raiz; public ArbolBinario( ) { raiz = null; }
Árboles public void insertarNodo (int d ) { if( raiz == null) raiz = new NodoArbol(d); else raiz.insertar(d); }
Árboles • Recorridos del árbol • Preoden • Inorden • Posorden
Arboles Recorrido Preorden Nodo.dato Preorden(nodo.izquierdo) Preorden(nodo.derecha)
Arboles Recorrido Preorden Si nodo==null return Nodo.dato Preorden(nodo.izquierdo) Preorden(nodo.derecha)
Árboles public void preorden (NodoArbol nodo) { if (nodo == null) return; System.out.print(nodo.dato+" "); preorden(nodo.izquierdo); preorden(nodo.derecho); }
Árboles public void preordenTraversal ( ) { preorden(raiz); }