Académique Documents
Professionnel Documents
Culture Documents
Ejemplo:
Director
SubDir1
JDpto1
JDpto2
SubDir2
JDpto3
SubDir3
JDpto4
JDpto5
Definicin de rbol
Un rbol (tree) es un T.D.A. que consta de un
conjunto finito T de nodos y una relacin R
(paternidad) entre los nodos tal que:
Hay un nodo, especialmente designado, llamado la
raz del rbol T.
A
B
D
Definicin de rbol
Los nodos restantes, excluyendo la raz, son
particionados en m (m 0) conjuntos disjuntos T1,
T2, ..., Tm, cada uno de los cuales es, a su vez, un
rbol, llamado subrbol de la raz del rbol T.
A
C
Definicin de rbol
A los nodos que no son races de otros subrboles
se les denomina hojas del rbol T, o sea, no tienen
sucesores o hijos.
A
C
Definicin de rbol
Si n es un nodo y A1, A2, A3, A4, A5, , Ak son
rboles con races n1, n2, n3, n4,, nk . Se puede
construir un nuevo rbol haciendo que n se
constituya en padre de los nodos n1, n2, n3, n4,, nk.
Aclaraciones
Si el conjunto finito T de nodos del rbol es vaco,
entonces se trata de un rbol vaco.
En esta estructura existe slo un nodo sin padre,
que es la raz del rbol.
Todo nodo, a excepcin del nodo raz, tiene uno y
slo un padre.
Los subrboles de un nodo son llamados hijos.
Ejemplos
A
C
Padre de C:
Padre de E:
Padre de G
Padre de A:
NO
Hijos de A:
Hijos de C:
Hijos de F:
NO
Aclaraciones
Para todo nodo k, distinto de la raz, existe una
nica secuencia de la forma:
k0, k1, k2, k3, ..., kn, donde k0=raz y kn=k
Con n >= 1, donde.
ki es el sucesor de ki-1,
para 1 <= i <= n, o sea, cada nodo ki de la
secuencia es la raz de otro subrbol.
Ejemplos
Secuencias
de A a G
C
B
D
de A a E
G
de A a F
C es sucesor de A y
F es sucesor de C
Otras definiciones
Grado de un nodo: cantidad de hijos de un nodo.
Grado de un rbol al mayor de los grados de todos
sus nodos.
Nodo hoja a un nodo sin hijos o con grado = 0.
Nodo rama a un nodo que tiene hijos, o sea, a la raz
de un subrbol.
Ejemplos
Grado
A
C
B
E
G
K
de A:
de E:
de G:
de J:
Otras definiciones
Nivel de un nodo al nivel de su padre ms uno. Por
definicin, la raz del rbol tiene nivel 0. Esta
definicin es recursiva.
Ejemplos
A
Nivel
B
D
de A:
de E:
de B:
de I:
de G:
Otras definiciones
rbol completo de nivel n a un rbol en el que
cada nodo de nivel n es una hoja y cada nodo de
nivel menor que n tiene, al menos, un subrbol no
vaco.
Ejemplos
A
Otras definiciones
Padre de un nodo al nodo raz del subrbol ms
pequeo que contiene a dicho nodo y en el cual l
no es raz.
Ejemplos
A
C
B
D
Padre de G:
Hijos de C: E
Hermanos de I:
Otras definiciones
rbol ordenado a todo rbol para el que se
considera el orden relativo de los sucesores o
subrboles de cualquier nodo. Es decir, en un rbol
ordenado se habla de primero, segundo o ltimo hijo
de un nodo en particular. El primer hijo de un nodo
de un rbol ordenado es denominado el hijo mayor
de ese nodo y el ltimo hijo es denominado el menor.
El rbol es ordenado si al intercambiar el orden
relativo de los subrboles de un nodo, representa
una situacin semnticamente diferente.
Luisa
Lisa
El rbol es ordenado
El primer subrbol corresponde al padre.
Otras definiciones
rbol orientado a un rbol para el cual no interesa
el orden relativo de los sucesores o subrboles de
cualquier nodo, ya que slo se tiene en cuenta la
orientacin de los nodos.
Ejemplo:
La estructura organizativa de una empresa, donde
no es importante el orden de los subdirectores a la
hora de representarlos en el rbol.
Otras definiciones
Una floresta es una coleccin de dos o ms rboles
disjuntos.
Aclaraciones:
Disjuntos significa que no hay nodos en comn
entre dos rboles cualesquiera de la misma.
De un rbol se obtiene una floresta al quitarle la
raz, si tiene dos hijos o ms.
De una floresta se obtiene un rbol al aadir un
nodo que sea raz de todos los rboles que la
conforman.
Ejemplos
A
B
D
Es
Es un
unarbol
floresta
NO es una floresta
Ejemplo
Mara
Juan
Luisa
Lisa
Hijo Izquierdo
Hijo Derecho
Recorrido en Preorden
1. Visitar la raz.
2. Recorrer subrbol izquierdo en preorden.
Recorrido en Preorden
A
C
B
D
Recorrido: A B D E C F G
1. Raz.
2. Subrbol izquierdo en preorden.
3. Subrbol derecho en preorden.
Recorrido en Simtrico
1. Recorrer subrbol izquierdo en simtrico.
2. Visitar la raz.
Recorrido en Simtrico
A
C
B
D
Recorrido D B E A F C G
1. Subrbol izquierdo en simtrico.
2. Raz.
3. Subrbol derecho en simtrico.
Recorrido en Postorden
1. Recorrer subrbol izquierdo en orden final.
Recorrido en Postorden
A
C
B
D
Recorrido D E B F G C A
1. Subrbol izquierdo en orden final.
2. Subrbol derecho en orden final.
3. Raz.
rboles Generales
Director
SubDir1
JDpto1
JDpto2
SubDir2
JDpto3
SubDir3
JDpto4
JDpto5
rboles Generales
Son rboles cuyo grado es mayor que dos.
Cmo representarlos?
rboles Generales
1
INFO
ENLDER
TERM
A
C
E
E
J
F
G
H
I
3 -1
6 -1 -1
INFO
A B E F
C G D
TERM
ENLDER -1
4
F
8
H
9 -1
I J
T T
Implementacin en C++
typedef int TIndex;
class TPreOrderNode
{
private:
void* aInfo;
TIndex aRightLink;
bool aEnd;
public:
TPreOrderNode(void* pInfo, bool pEnd) : aInfo(pInfo), aRightLink (-1),
aEnd(pEnd){}
void* Info() {return aInfo;}
TIndex RightLink () {return aRightLink;}
void RightLink(TIndex pRightLink) {aRightLink = pRightLink;}
bool End() {return aEnd;}
};
INFO
rbol binario recorrido en Postorden invertido
ENLIZQ primer hijo en el rbol general e hijo
izquierdo en el binario.
Convencin: -1 si no existe
FAM
Indica ltimo hermano en el rbol general y
enlace derecho en NULL en el binario. Indica
el nodo final de cada familia
A
C
E
E
J
F
G
H
I
1
INFO
4 -1 -1 -1 -1 -1 -1
A B C D H I J G E F
FAM
ENLIZQ
T F
Implementacin en C++
class TFamilyNode
{
private:
void* aInfo;
TIndex aLeftLink;
bool aFamily;
public:
TFamilyNode(void* pInfo, bool pFamily) : aInfo(pInfo), aLeftLink(-1),
aFamily(pFamily){}
void* Info() {return aInfo;}
TIndex LeftLink () {return aLeftLink;}
void LeftLink (TIndex pLeftLink) {aLeftLink = pLeftLink;}
bool Family() {return aFamily;}
};
INFO
GRADO
A
C
E
E
J
F
G
H
I
GRADO
TERM
E F
B G C H
D A
Implementacin en C++
class TPostOrderNode
{
private:
void* aInfo;
int aDegree;
public:
TPostOrderNode(void* pInfo, int pDegree) : aInfo(pInfo),
aDegree(pDegree){}
void* Info() {return aInfo;}
int Degree() {return aDegree;}
};