Professional Documents
Culture Documents
Programacin II
Arboles Binarios(AB)
Definicin
1
Programacin II 1er cuatrimestre 2016
Grado es el nmero mximo de hijos que tienen los nodos del rbol.
As, en el ejemplo anterior el rbol es de grado 3
rbol binario
Definicin 1:
Es un rbol de grado 2.
Definicin 2:
Un rbol binario es aquel que:
es vaco,
est formado por un nodo cuyos subrboles izquierdo y derecho son a su vez rboles
binarios.
Subarboles:
Por la naturaleza recursiva de los AB, todo subarbol sigue siendo rbol.
La altura de un subarbol es a lo sumo la altura del rbol padre - 1.
2
Programacin II 1er cuatrimestre 2016
rbol binario balanceado es aquel en el que en todos sus nodos se cumple la siguiente
propiedad:La altura(subrbol_izquierdo) - altura(subrbol_derecho) es menor o igual a 1.
3
Programacin II 1er cuatrimestre 2016
Invariante de representacin
Figura5: Nodo
4
Programacin II 1er cuatrimestre 2016
5
Programacin II 1er cuatrimestre 2016
//version1:
public boolean balanceado(){
return (raiz == null) ? true : balanceado(raiz);
}
private boolean balanceado(Nodo<T> nodo){
boolean ret= true;
int altIzq = 0 ;
int altDer = 0 ;
if (nodo.izq != null){
altIzq =altura(nodo.izq);
ret = ret && balanceado(nodo.izq);
}
if (nodo.der != null){
altDer =altura(nodo.der);
ret = ret && balanceado(nodo.der);
}
ret=ret && Math.abs(altIzq - altDer) <= 1 ;
return ret;
}
@Override
public String toString(){
return (raiz == null) ? "" : toString(raiz);
}
private String toString(Nodo<T> nodo){
String ret = nodo.info.toString();
if (nodo.izq != null) ret = ret + toString(nodo.izq);
if (nodo.der != null) ret = ret + toString(nodo.der);
return ret;
}
6
Programacin II 1er cuatrimestre 2016
Ejercicio1:
Ejercicio2: