Download Clases #18
Document related concepts
no text concepts found
Transcript
Clases #18 01/diciembre/2014 Arboles binarios Cada nodo tiene dos hijos Aplicación: representa y evolución de expresiones aritmética. Búsqueda y ordenamiento. Terminología: Dos subárboles diferenciados en cada nodo (inclinaciones). Completo: cada nodo tiene dos o ceros descendientes, la figura anterior no es yn árbol binario completo. Balanceado: para cada nodo la diferencia entre las alturas de subDer y SubIzq debe ser menor que dos. Degenerado: cada nodo solo tiene un hijo, excepto la hoja. Lleno: cada nivel tiene el máximo de nodos que soporta. Ejemplo donde podemos presenciar si es un árbol binario, completo, balanceado, degenerado o lleno Arboles Completo Lleno Degenerado Balanceado A X X B X X X C X X ✓ ✓ ✓ X ✓ ✓ X ✓ ✓ D Notas: En el balanceado si la diferencia de niveles es mayor a entonces no está balanceado, para determinar si un árbol esta balanceado está lleno se cumple esta formulas 2ℎ -1 donde h es el nivel del árbol. Implementación Se puede implementar tanto en arreglos o nodos. Codigo java - NodoArbolBin public class NodoArbolBin <T>{ private T dato; private NodoArbolBin izq; private NodoArbolBin der; public NodoArbolBin(T dato) { this.dato = dato; izq = der = null; } public NodoArbolBin(T dato, NodoArbolBin izq, NodoArbolBin der) { this.dato = dato; this.izq = izq; this.der = der; } public T getDato(){ return dato; } public NodoArbolBin getIzq(){ return izq; } public NodoArbolBin getDer(){ return der; } public void setIzq(NodoArbolBin izq){ this.izq=izq; } public void setDer(NodoArbolBin der){ this.der=der; } }