1 / 13

ÁRBOLES

ÁRBOLES. Curso de Introducción a la Computación. Árboles binarios. Raiz. Un árbol binario es un conjunto de elementos que o está vacío o está dividido en tres subconjuntos desarticulados. El primer subconjunto tiene un solo elemento llamado raíz del árbol.

wyome
Télécharger la présentation

ÁRBOLES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ÁRBOLES Curso de Introducción a la Computación

  2. Árboles binarios Raiz Un árbol binario es un conjunto de elementos que o está vacío o está dividido en tres subconjuntos desarticulados. El primer subconjunto tiene un solo elemento llamado raíz del árbol. Los otros son en si mismos árboles binarios, llamados subárboles izquierdo y derecho del árbol original. Subárbol derecho Subárbol izquierdo

  3. Representación y operaciones Supondremos al árbol consistente en nodos con tres campos: info, left y right. El campo info contiene la información útil, left es un apuntador a subárbol izquierdo y right es un apuntador al subárbol derecho. Las operaciones básicas con árboles son: maketree, setleft y setright. La función maketree(x) construye un árbol binario que consiste de un solo nodo con campo de información x y regresa el apuntador a dicho árbol.

  4. Algoritmo para construir un árbol binario FUNCION MAKETREE(X: INFOTYPE) REGRESA NODOPTR 1. P ¬ GETNODE 2. INFO(P) ¬ X 3. LEFT(P) ¬ NIL 4. RIGHT(P) ¬ NIL 5 REGRESA P

  5. Rutinas SetLeft y SetRight SUBRUTINA SETRIGHT(P: NODEPTR, X:INFOTYPE) 1. SI RIGHT(P) <> NIL ENTONCES a. ERROR "YA EXISTE EL SUBARBOL DERECHO" 2. RIGHT(P) ¬ MAKETREE(X) SUBRUTINA SETLEFT( P:NODEPTR, X:INFOTYPE) 1. SI LEFT(P) <> NIL ENTONCES a. ERROR "YA EXISTE EL SUBARBOL IZQUIERDO" 2. LEFT(P) ¬ MAKETREE(X)

  6. Algoritmo para construir un árbol binario ordenado. SUBRUTINA PLACE(P:NODEPTR,X:INFOTYPE) 1. SI P=NIL ENTONCES a. P ¬ MAKETREE(X) 2. SINO a. SI X<INFO(P) ENTONCES 1. PLACE(LEFT(P),X) b. SI X>INFO(P) ENTONCES 1. PLACE(RIGHT(P),X) c. SI X=INFO(P) ENTONCES 1. WRITE "ELEMENTO REPETIDO"

  7. Recorrido de árboles • Otra operación común es recorrer un árbol binario: esto es, pasar a través del árbol, enumerando cada uno de los nodos una vez. A esto se le llama visitar cada nodo. Existen al menos tres formas de recorrer un árbol: • En preorden • En entreorden • En posorden

  8. Recorrido en preorden 1. Visitar primero la raíz. 2. Visitar el subarbol izquierdo en preorden. 3. Visitar el subarbol derecho en preorden. Algoritmo : SUBRUTINA PRETRAV(TREE:NODEPTR) 1. SI TREE<>NIL ENTONCES a. ESCRIBE INFO(TREE) b. PRETRAV(LEFT(TREE)) c. PRETRAV(RIGHT(TREE))

  9. Recorrido en entreorden 1. Visitar el subarbol izquierdo en entreorden. 2. Visitar primero la raíz. 3. Visitar el subarbol derecho en entreorden. Algoritmo: SUBRUTINA INTRAV(TREE:NODEPTR) 1. SI TREE<>NIL ENTONCES a. INTRAV(LEFT(TREE)) b. ESCRIBE INFO(TREE) c. INTRAV(RIGHT(TREE))

  10. Recorrido en posorden 1. Visitar el subarbol izquierdo en posorden. 2. Visitar el subarbol derecho en posorden. 3. Visitar primero la raíz. Algoritmo: SUBRUTINA POSTTRAV(TREE:NODEPTR) 1. SI TREE<>NIL ENTONCES a. POSTTRAV(LEFT(TREE)) b. POSTTRAV(RIGHT(TREE)) c. ESCRIBE INFO(TREE)

  11. Algunas definiciones Árbol estrictamente binario – todos los nodos que no son hojas tienen subárbol izquierdo y derecho no vacíos. Profundidad – es el máximo nivel de cualquier hoja del árbol. Árbol binario completo – todos las hojas están en el último nivel. Árbol binario cuasi-completo – para un árbol de d niveles todos las hojas están en los niveles d o d–1 y para todo nodo nd con un descendiente derecho en el nivel d, todos los descendientes izquierdos de nd que sean hojas también estrán en el nivel d.

  12. a a b c b c d e d e f g f g h i j k a a b c b c d e f g d e f g h i h h i

  13. Diversas representaciones de árboles g Mediante niveles a c d g h l m n q d h a m c l q n Mediante paréntesis (g(d(a.(c..)).)(h.(m(l..)(q(n..).))))

More Related