arbol

Post on 18-Dec-2015

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

trabajo

TRANSCRIPT

Aplicaciones de rboles binariosUn rbolBINARIOes una estructura de datos til cuando se trata de hacer modelos de procesos en donde se requiere tomar decisiones en uno de dos sentidos en cada parte del proceso. Por ejemplo, supongamos que tenemos un arreglo en donde queremos encontrar todos los duplicados. Esta situacin es bastante til en el manejo de las bases de datos, para evitar un problema que se llama redundancia.Una manera de encontrar los elementos duplicados en un arreglo es recorrer todo el arreglo y comparar con cada uno de los elementos del arreglo. Esto implica que si el arreglo tieneelementos, se deben hacercomparaciones, claro, no es mucho problema sies un nmero pequeo, pero el problema se va complicando ms a medida queaumenta.Si usamos un rbol binario, el nmero de comparaciones se reduce bastante, veamos cmo.El primer nmero del arreglo se coloca en la raz del rbol (como en este ejemplo siempre vamos a trabajar con rboles binarios, simplemente diremos rbol, para referirnos a un rbol binario) con sus subrboles izquierdo y derecho vacos. Luego, cada elemento del arreglo se compara son la informacin del nodo raz y se crean los nuevos hijos con el siguiente criterio: Si el elemento del arreglo es igual que la informacin del nodo raz, entonces notificar duplicidad. Si el elemento del arreglo es menor que la informacin del nodo raz, entonces se crea un hijo izquierdo. Si el elemento del arreglo es mayor que la informacin del nodo raz, entonces se crea un hijo derecho.Una vez que ya est creado el rbol, se pueden buscar los elementos repetidos. Sixel elemento buscado, se debe recorrer el rbol del siguiente modo:Seakla informacin del nodo actualp. Sientonces cambiar el nodo actual aright(p), en caso contrario, en caso de queinformar una ocurrencia duplicada y en caso de quecambiar el nodo actual aleft(p).El siguiente algoritmoleer numero buscado >> ntree=makeTree(n)while(hay numeros en el arreglo){ leeSiguienteNumero >> k p=q=tree; while(k!=info(p)&&q!=NULL){ p=q if(k

top related