*---* *---* *---* *---*
| A | | A | | A | | A | ......... Nivel 1
*---* *---* *---* *---*
| | | | |
+--+ +--+ +--+ +------+ +------+
| | | | |
*---* *---* *---* *---* *---*
| B | | B | | B | | B | | C | ......... Nivel 2
*---* *---* *---* *---* *---*
| | | | |
+--+ +--+ +--+ +--+ +--+
| | | | |
*---* *---* *---* *---* *---*
| C | | D | | E | | F | | G | ......... Nivel 3
*---* *---* *---* *---* *---*
| | |
+--+ +--+ +--+
| | |
*---* *---* *---*
| D | | H | | I | ......... Nivel 4
*---* *---* *---*
|
+--+
|
*---*
| E | ......... Nivel 5
*---*
Arbol 1 Arbol 2 Arbol 3 Arbol 4
Profundidad Nodos por Nivel Nodos a Profundidad
*---*
comenzar .....| 1 |...................>...... 1 2**(1-0)=1 (2**1)-1=1
*---* .
| | .
+--------------+ +--------------+ .
.....<.........|...............<...............|.....<......
. *---* *---*
.....>.......| 2 |.............>.............| 3 |...>................ 2 2**(2-0)=2 (2**2)-1=3
*---* *---* .
| | | | .
+------+ +------+ +------+ +------+ .
......<.......|...............|.......<.......|...............|.......<......
. *---* *---* *---* *---*
......>.....| 4 |...........| 5 |.....>.....| 6 |...........| 7 |.....>.......... 3 2**(3-0)=4 (2**3)-1=7
*---* *---* *---* *---* .
| | | | | | | | .
+--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ .
......<.......|.......|.......|.......|...<...|.......|.......|.......|.......<......
. *---* *---* *---* *---* *---* *---* *---* *---*
......>.....| 8 |...| 9 |...|1 0|...|1 1|.>.|1 2|...|1 3|...|1 4|...|1 5|..... terminar 4 2**(4-0)=8 (2**4)-1=1
*---* *---* *---* *---* *---* *---* *---* *---*
.
Arbol 5 .
.
k 2**(k-0)=n (2**k)-1=m
El Arbol 1 y el Arbol 2 son árboles binarios distintos, ya que si bien tienen
los mismos nodos su disposición es diferente, árboles binarios que si fueran
árboles comunes, serían el mismo árbol común.
El Arbol 3 es un árbol binario sesgado.
El Arbol 4 es un árbol completo.
El Arbol 5 es un árbol lleno.
Los nodos de un árbol pueden enumerarse, como puede verse en el Arbol 5,
numerándolos nivel a nivel, de isquierda a derecha.
Observar que MAKEBT() lleva a armar el árbol desde abajo hacia arriba,
desde los nodos hojas hacia el nodo raíz.
*-----* *-----*
(1) | A | (1) | A |
|-----| |-----|
(2) | B | (2) | B |
|-----| |-----|
(3) | | (3) | C |
|-----| |-----|
(4) | C | (4) | D |
|-----| |-----|
(5) | | (5) | E |
|-----| |-----|
(6) | | (6) | F |
|-----| |-----|
(7) | | (7) | G |
|-----| |-----|
(8) | D | (8) | H |
|-----| |-----|
(9) | | (9) | I |
|-----| *-----*
. .
. .
. .
|-----|
(16) | E |
*-----*
Arbol 3 Arbol 4
Observar que esta representación está basada en la enumeración de los nodos
y en uno de los lemas vistos en el punto anterior.
*------------------------* *------------------------*
| LCHILD | DATA | RCHILD | | * | DATA | * |
*------------------------* *----|--------------|----*
| |
1 Nodo - 3 Campos +-------+ +-------+
| |
*------------------------* *------------------------*
| | DATA | | | | DATA | |
*------------------------* *------------------------*
LCHILD RCHILD
*---------------------* *---------------------*
T ---> | * | A | 0 | T ---> | * | A | * |
*---|-----------------* *---|-------------|---*
| +------------------+ +------------------+
V V V
*---------------------* *---------------------* *---------------------*
| * | B | 0 | | * | B | * | | * | C | * |
*---|-----------------* *---|-------------|---* *---|-------------|---*
| +-----+ +-----+ +-----+ +-----+
V V V V V
*---------------------* *---------------------* *---------------------* *---------------------* *---------------------*
| * | C | 0 | | * | D | * | | 0 | E | 0 | | 0 | F | 0 | | 0 | G | 0 |
*---|-----------------* *---|-------------|---* *---------------------* *---------------------* *---------------------*
| +-----+ +-----+
V V V
*---------------------* *---------------------* *---------------------*
| * | D | 0 | | 0 | H | 0 | | 0 | I | 0 |
*---|-----------------* *---------------------* *---------------------*
|
V
*---------------------*
| | E | |
*---------------------*
Arbol 3 Arbol 4
Observar que con esta representación solo es posible navegar desde la
raíz hacia los hijos, y nunca volver hacia el padre.
Nodo A
*---------------------------------------* *---------------*
| | | *---* |
| *---* | | | 0 | |
| | | | Padre ............>| *---* |<............
| *---* | Campo de enlace . | *---*---* | .
| | *---* . | | . | . | | .
| | | A | . | *-.-*-.-* | .
| *---------- ..... ----------* | *---* . *-----.---.-----* .
| | | | | | | | Datos | | . . . . Para simplificar
| *---------- ..... ----------* | Campos de informacion +--+ +--+ *--.------------* . . *------------.--* el dibujo se
| | | | | . *---* | . . C | *---* . | omitieron los
| | *---* *---* | ...... | | . . | | ...... | campos de informacion
| *-------* | | B | | C | | *---* |<..... .....>| *---* |
| | | | | Hijos *---* *---* | *---*---* | | *---*---* |
| *-------* | Campos de enlaces | | 0 | 0 | | | | 0 | 0 | |
| | | *---*---* | | *---*---* |
*---------------------------------------* *---------------* *---------------*
Arbol 6 Nodo B Arbol 6 Nodo C
En inglés este algoritmo se conoce como Binary Tree Traversal. Traversal
significa travesía. Existen alternativas de este algoritmo según el
órden en que se visite el nodo, entendido como el procesamiento de los datos
que contiene el mismo. Si señalamos con :
deben considerarse las siguientes alternativas :
donde las alternativas 5, 6 y 7 no se usan, ya que se restringen las
travesías, a las que usan seguir el hijo isquierdo en primer instancia,
ignorándose las restantes.
*---*
| + |
*---*
| |
+------+ +------+
| |
*---* *---*
| * | | E | Inorder ----> A / B ** C * D + E
*---* *---*
| |
+--+ +--+
| |
*---* *---*
| / | | D | Preorder ----> + * / A ** B C D E
*---* *---*
| |
+--+ +--+
| |
*---* *---*
| A | | **| Postorder ----> A B C ** / D * E +
*---* *---*
| |
+--+ +--+
| |
*---* *---*
| B | | C |
*---* *---*
Arbol 8
Observar que en un árbol binario de n nodos, si atendemos solo a los
enlaces hacia sus hijos, tenemos :