Documentos de Académico
Documentos de Profesional
Documentos de Cultura
27.777.893
Facultad De ingeniería
Programacion 3
Conceptos Base
Estructura
El nodo superior se llama raíz (root) del árbol. Los elementos que están
directamente debajo de un elemento se llaman sus hijos. El elemento directamente
encima de algo se llama su padre. Por ejemplo, 'a' es un hijo de 'f' y 'f' es el padre
de 'a'. Finalmente, los elementos sin hijos se llaman leaves.
Nodo
struct Node {
int data;
struct Node* left;
struct Node* right;
// val es el valor que debe ser añadido a el dato en cuestion
Node(int val)
{
data = val;
// Left and right child del nodo se inicializaran en NULL
left = NULL;
right = NULL;
}
};
int main()
{
/*CREA root*/
struct Node* root = new Node(1);
/* Representación grafica del árbol una vez ejecutada la acción
1
/ \
NULL NULL
*/
Depth: Son los pasos o conexiones existentes para llegar al nodo raíz desde un nodo
cualquiera, podría ejemplificarse como un árbol genealógico, sería el número de
ancestros existentes.
Height: Son los Pasos o conexiones existentes para llegar de un nodo leaf hasta un
nodo cualquiera. Podría verse como el fondo o la máxima profundidad del árbol.
Orden Transversal
Este es un esquema de identificación organizativa para los arboles parte del principio
de leer un árbol de izquierda a derecha desde sus leaves hasta el root y volviendo a
sus leaves.
Orden Transversal
5–2–6–1–3
Funciones
SubTree_first: Esta funcion retorna la raiz del primer subarbol del arbol en cuestion
para ello de manera grafica se retorna el nodo ubicado a la izq del arbol , es decir el
primer nodo asignado luego de LEFT=NULL
Sucessor Node:
2. De lo contrario, se debe recorrer el arbol (gráficamente hacia arriba) hasta que nodo
= nodo.parent.left.
Insert Item:
Eliminar Item:
Consiste en eliminar un item del árbol, si el item es leaves, es decir, no tiene hijos, se
elimina sin ningún otro paso adicional, ahora si es root por ejemplo que seria el caso
mas complicado, lo que se debe hacer es intercambiar posiciones con su predecesor
siguiendo el orden transversal hasta que el item a eliminar en cuestión quede como
un leaves y pueda eliminarse.
Para que este algoritmo pueda funcionar hay que tener en cuenta que es necesario
actualizar los tamaños correspondientes a los nodos, para ellos tenemos una
propiedad de los árboles binarios llamada
Subtree Augmentation
La cual se basa en que cada nodo en el árbol binario pueda guardar un numero
constante de campos adicionales. Por lo que en caso de que se altere el tamaño se
pueden actualizar las propiedades solo de los ancestros del nodo a afectar.
Subtree Propetys
Las propiedades no permitidas son ubicar el índice o Depth, esto debido a que
tendríamos que depender de todos los nodos del árbol completo, por lo que se vuelve
muy pesado llevar esa cuenta, no como en las propiedades anteriores que dependen
de sus ancestros directamente, por lo que en resumen dependería directamente de
el subárbol de el nodo en cuestión.
Arboles AVL