Está en la página 1de 8

ÁRBOL RAÍZ

ARISTA (RAMA)

PADRE NODO

HIJO
HERMANO

HOJAS

OTROS CONCEPTOS
CAMINO:
ABEKS

ADIPu

LONGITUD DEL CAMINO:


La longitud del camino para llegar al nodo T es de 5.

La longitud del camino para llegar a Q es de 4.

La longitud del camino de A es 1.


ALTURA DE UN ÁRBOL:
Nivel más alto del árbol. Ósea es la longitud del camino desde la raíz hasta la hoja más
lejana. En el ejemplo anterior la altura del árbol es 5.

NIVEL:
El nivel es número de nodos que se encuentran entre él y la raíz.

Por ejemplo los nodos B, C y D en el árbol mostrado anteriormente están en el nivel 2.

Los nodos K, L, M, N, O, P y Q están en el nivel 4.

El nivel general de un árbol es igual a la altura del mismo.

GRADO O ARIDAD:
Es el número de hijos de un nodo. El número de aridad del árbol completo es igual a la
cantidad máxima de hijos que pueda tener un nodo.

El árbol anteriormente mostrado tiene aridad o grado: 3 porque la raíz es el que tiene la
cantidad máxima de hijos que es 3.

ÁRBOL BINARIO

Son árboles donde los nodos no pueden tener más de dos hijos o descendientes.

Los hijos son conocidos como nodo izquierdo y nodo derecho. Los nodos de cada subárbol no
pueden pertenecer a otro subárbol.

SUBÁRBOL IZQUIERDO SUBÁRBOL DERECHO


ÁRBOL BINARIO LLENO:
Es un árbol donde todos sus nodos a excepción de los nodos hojas tienen dos hijos. Es
decir todos los nodos tienen un nodo izq y un nodo derecho a excepción de las hojas o terminales.

ÁRBOL BINARIO COMPLETO:


Es un árbol lleno hasta el nivel mayor -1, donde todas su hojas están completas de
izquierda a derecha sin existir ningún hueco.

ÁRBOL EQUILIBRADO:
Un árbol equilibrado es un árbol en el que para cada nodo el número de niveles de sus
subárboles izq y der no debe diferir en más de una unidad.

ÁRBOL TOTALMENTE EQUILIBRADO:


Un árbol totalmente equilibrado es un árbol donde todos los subárboles izquierdo y
derecho de cada nodo tienen la misma altura.

ÁRBOL BINARIO DE EXPRESIÓN:


Un árbol binario de expresión se utiliza para almacenar operaciones matemáticas en
memoria, especialmente para compiladores de lenguajes de programación. Los paréntesis no se
utilizan dentro del árbol y por lo general las expresiones se ingresan al árbol de forma postfija.

También podemos decir que los operadores se colocan en la raíz y los operandos izquierdo
y derecho serían los nodos izquierdo y derecho respectivamente. Si tenemos una operación en el
operando izquierdo o derecho, estarían presenciando un sub árbol para poder representar dicha
sub expresión.

Ejemplos:

Árbol Completo: Árbol Binario NO Completo:

Árbol Lleno
CONSTRUCCIÓN:
struct Nodo

int val;

struct Nodo* der;

struct Nodo* izq;

};

Inserción:

void Insertar(Nodo* &raiz, int v){

Nodo* n = new Nodo;

n->izq = NULL; n->der = NULL; n->val = v;

if(raiz == NULL) {

raiz = n;

return;

}else{

if(v < raiz->val) {

Insertar(raiz->izq, v);

}else{

if(v > raiz->val) {

Insertar(raiz->der, v);

}
RECORRIDOS (PROFUNDIDAD Y NIVEL):

Por profundidad tenemos 3 recorridos:

PreOrden

EnOrden

PostOrden

void PreOrden(Nodo *raiz)

if (raiz != NULL) {

cout << raiz->val<<endl;

PreOrden(raiz->izq);

PreOrden(raiz->der);

void EnOrden(Nodo *raiz)

if (raiz != NULL) {

EnOrden(raiz->izq);

cout<<raiz->val<<endl;

EnOrden(raiz->der);

void PostOrden(Nodo *raiz)

if (raiz != NULL) {
PostOrden(raiz->izq);

PostOrden(raiz->der);

cout<< raiz->val<<endl;

Para recorrer por nivel necesitamos la ayuda de una cola:

Se encola y desencola hasta que la pila esté vacía.

ALTURA, ANCHO, NODO HOJA:

//Operaciones de Colas

void Encolar(Nodo* valor, tCola* &cola){

tCola *aux = new tCola;

tCola *nodoNuevo = new tCola;

nodoNuevo->val = valor;

nodoNuevo->sgte = NULL;

if (cola == NULL){

cola = nodoNuevo;

else{

aux = cola;

while (aux->sgte != NULL)

aux = aux->sgte;

if (aux->sgte == NULL){
aux->sgte = nodoNuevo;

Nodo* Desencolar(tCola* &cola)

Nodo *nodoArbol = new Nodo;

tCola *aux = new tCola;

if (cola != NULL)

aux = cola;

nodoArbol = aux->val;

aux = aux->sgte;

cola = aux;

return nodoArbol;

void MostrarCola(tCola* cola)

tCola * aux = new tCola;

aux = cola;

while (aux!=NULL){

cout << aux->val->val<<endl;


aux = aux->sgte;

void PorNiveles(Nodo* raiz, tCola* &cola)

Nodo *aux = new Nodo;

if (raiz != NULL) {

Encolar(raiz, cola);

while (cola != NULL) {

aux = Desencolar(cola);

cout<<aux->val<<endl;

if (aux->izq != NULL){

Encolar(aux->izq, cola);

if (aux->der != NULL){

Encolar(aux->der, cola);

También podría gustarte