ÁRBOLES

Post on 07-Jan-2016

57 views 5 download

description

Á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. - PowerPoint PPT Presentation

Transcript of ÁRBOLES

ÁRBOLES

Curso de Introducción a la Computación

Árboles binariosUn á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.

Raiz

Subárbol izquierdo

Subárbol derecho

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.

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

Rutinas SetLeft y SetRight

SUBRUTINA SETLEFT( P:NODEPTR, X:INFOTYPE)

1. SI LEFT(P) <> NIL ENTONCES

a. ERROR "YA EXISTE

EL SUBARBOL IZQUIERDO"

2. LEFT(P) MAKETREE(X)

SUBRUTINA SETRIGHT(P: NODEPTR, X:INFOTYPE)

1. SI RIGHT(P) <> NIL ENTONCES

a. ERROR "YA EXISTE EL

SUBARBOL DERECHO"

2. RIGHT(P) MAKETREE(X)

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"

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

Recorrido en preorden1. 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))

Recorrido en entreorden1. 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))

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)

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.

a

b c

d

g

e

f

a

b c

d ge f

h i j k

a

b c

d ge f

h i

a

b c

d ge f

h i h

Diversas representaciones de árbolesg

d h

a

c

m

l q

Mediante paréntesis

(g(d(a.(c..)).)(h.(m(l..)(q(n..).))))

n

Mediante niveles a c dg h l m n q