Está en la página 1de 2

Arboles y Grafos ------- Analisis de Algoritmos

Miercoles 8 de febrero 2017

Arboles: Pequeo conjunto dentro de los grafos


Estructura de datos con un nodo principal(raiz), una forma
de organizar gerarquicamente la informacion.

"Nodos Hijos" que depende del nodo raiz

Donde los nodos que apuntan al final o los cuales no tienen


hijos se llaman "Hojas".

Arbol binario: Puede tener entre 0 y 2 hijos

Pasos para crear un rbol


1. Crear un nodo( Informacion que se va a guardar) y asignarlo
inicialmente como raiz.

2. Insertar:

Arbol de ordenamiento:
En un arbol de ordenaminento la recomendacion es que siempre
se inserte el nodo hacia la izquierda.

De izquierda a derecha ( de menor a mayor).

Arbol binario:
Dos opciones: Hacia la derecha o a la izquierda.

Para insertar un nodo en un arbol vacio.


Se tiene en cuenta 3 factores.

1. Verficar que sea Vacio.


2. Entrada de usuario.
3. Regla general (Balanceo).

3. Busqueda y Recorrido:
Existen multiples opciones:
Si el arbol esta bien balanceado u ordenado, la busqueda se demorara
el numero de niveles que tenga el arbol y donde este ubicado el nodo.

Si el arbol no esta ordenado Se usa un algoritmo de fuerza bruta


Este prueba todas las posibilidades posibles una por una hasta encontrar la
correcta
Esto puede llevar un tiempo considerable pero es efectivo.

Para buscar o recorrer un arbol se usa varias tecnicas u opciones

- Pre orden: Desde la raiz, llegar hijo izquierdo -> llegar hijo derecho.
- Post Orden: Hijo izquierdo, Hijo derecho y por ultimo la raiz.
- In orden: Hijo izquierdo, raiz y ultimo hijo derecho
- Orden por nivel: Va recorriendo el arbol por nivel de arriba hacia abajo.

4. Borrado:
Pasos:

1. Encontrar el elemento que se va a eliminar.


2. Ajustar (Ordenar los nodos cuando se borra uno ) al que estan conectados
Es decir conectar o enlazar los nodos hijos del nodo borrado a otro nodo.
3. Finalmente el borrado.

5. Vaciado:
Raiz = null ; Asignarle un valor nulo o vacio al nodo principal o raiz

Codigo recursivo de Preorden

preorden( nodo n){

If (n == null){
return = 0;
}
visitar(n);
preorden(n.izquierda);
preorden(n.derecha):

Codio recursivo de In orden

InOrden( nodo n){

If (n == null){
return = 0;
}
InOrden(n.izquierda);
visitar(n);
InOrden(n.derecha);
}

Codigo recursivo PostOrden

postOrden( nodo n){

If (n == null){
return = 0;
}
postOrden(n.izquierda);
postOrden(n.derecha);
visitar(n);
}

Codigo recursivo Orden por nivel


Se usa una cola donde entra desde el ultimo nodo hasta el primero(Nodo Raiz)

[g][f][e][d][c][b][a] -> Salida: [a][b][c][d][e][f][g]


Desde los nodos hijos hacia los nodos padres y por ultimo la raiz.

También podría gustarte