Está en la página 1de 9

MAPA CONCEPTUAL ARBOL

BINARIO
Estructura de Datos 3F21

Catedrático: M. T. I. Antonio Martínez González


Alumno: Kevin Jair Huerta Labastida
Introducción

Los árboles a diferencia de las listas son una estructura de datos de no lineal,
atendiendo más a una estructura de tipo jerárquico. Los árboles son, sin duda,
una de las estructuras de datos no lineales, empleadas en informática, tanto para
resolver problemas de hardware como de software. Los árboles de directorios
son organizaciones bastante empleadas por cualquier usuario o programador de
una computadora. De igual manera cumplen un buen papel en la toma de
decisiones, valido como árbol de decisiones.
Los árboles genealógicos y los organigramas son ejemplos comunes. Entre otras
aplicaciones, los árboles se emplean para analizar circuitos eléctricos y para
representar la estructura de fórmulas matemáticas, así como para organizar la
información de bases de datos, para representar la estructura sintáctica de un
programa fuente en compiladores y para la toma de decisiones.
Definición de árboles
Los árboles binarios son estructuras de datos muy similares a las listas
doblemente enlazadas, en el sentido que tienen dos punteros que apuntan a
otros elementos, pero no tienen una estructura lógica de tipo lineal o secuencial
como aquellas, sino ramificada. Tienen aspecto de árbol, de ahí su nombre.
Un árbol binario es una estructura de datos no lineal en la que cada nodo puede
apuntar a uno o máximo a dos nodos. También se suele dar una definición
recursiva que indica que es una estructura compuesta por un dato y dos árboles.
Esto son definiciones simples. Este tipo de árbol se caracteriza porque tienen un
vértice principal y de él se desprende dos ramas. La rama izquierda y la rama
derecha a las que también se les conocen como subárboles.
Una representación gráfica de la estructura general de un árbol binario se puede
visualizar en la imagen1 que presente a continuación.
Introduction

Trees, unlike lists, are a non-linear data structure, attending more to a hierarchical
type structure. Trees are undoubtedly one of the non-linear data structures used
in computing, both for solving hardware and software problems. Directory trees
are organizations widely used by any user or programmer on a computer.
Likewise, they play a good role in decision-making, valid as a decision tree.
Family trees and organization charts are common examples. Among other
applications, trees are used to analyze electrical circuits and to represent the
structure of mathematical formulas, as well as to organize database information,
to represent the syntactic structure of a source program in compilers, and for
decision-making.
Definition of trees
Binary trees are data structures very similar to doubly linked lists, in the sense
that they have two pointers that point to other elements, but they do not have a
logical structure of a linear or sequential type like those, but rather branched.
They look like a tree, hence its name.
A binary tree is a nonlinear data structure in which each node can point to one or
a maximum of two nodes. A recursive definition is also usually given, indicating
that it is a structure made up of one piece of data and two trees. These are simple
definitions. This type of tree is characterized in that it has a main vertex and two
branches come off it. The left branch and the right branch which are also known
as subtrees.
A graphical representation of the general structure of a binary tree can be seen
in image1 below.
Insertion in an ABB
To insert an X element into an ABB, an unsuccessful search is made for this
element in the tree, and it is inserted where it should have been found. As seen
in the previous section, the average cost of insertion into an ABB is O (log (n)).

Elimination in an ABB
First, a search is performed for the element to be removed, say X. If the search
was unsuccessful, nothing is done, otherwise the following possible cases must
be considered:
If X is a childless sheet, it can be removed immediately.

If X has only one child then the parent reference is changed to X so that it now
references X's child.
If X has two children, the complicated case, we proceed as follows: node Y =
minimum node is removed from the right subtree of X, which corresponds to one
of the easy cases of elimination, and the value stored in node X by the value that
was stored in node Y.
Note that the tree still meets the properties of an ABB with this removal method.
If it is known in advance that the number of deletions will be small, then the
deletion can be replaced by a mark indicating whether a node was deleted or not.
This strategy is known as lazy deletion.
Desarollo
Inserción en un ABB
Para insertar un elemento X en un ABB, se realiza una búsqueda infructuosa de
este elemento en el árbol, y en el lugar en donde debiera haberse encontrado se
inserta. Como se vio en la sección anterior, el costo promedio de inserción en un
ABB es O(log(n)).

Eliminación en un ABB
Primero se realiza una búsqueda del elemento a eliminar, digamos X. Si la
búsqueda fue infructuosa no se hace nada, en caso contrario hay que considerar
los siguientes casos posibles:
Si X es una hoja sin hijos, se puede eliminar inmediatamente.

Si X tiene un solo hijo, entonces se cambia la referencia del padre a X para que
ahora referencie al hijo de X.
Si X tiene dos hijos, el caso complicado, se procede de la siguiente forma: se
elimina el nodo Y = minimo nodo del subárbol derecho de X, el cual corresponde
a uno de los casos fáciles de eliminación, y se reemplaza el valor almacenado
en el nodo X por el valor que estaba almacenado en el nodo Y.

Nótese que el árbol sigue cumpliendo las propiedades de un ABB con este
método de eliminación.
Si de antemano se sabe que el número de eliminaciones será pequeño, entonces
la eliminación se puede substituir por una marca que indique si un nodo fue
eliminado o no. Esta estrategia es conocida como eliminación perezosa (lazy
deletion).
Mapa Conceptual
Referencias

 Shaffer, Clifford A.: Data Structures and Algorithm Analysis in C++, Third
Edition, Dover Publications, 2013. (En línea.)
 Hernández, Z.J. and others: Fundamentals of Data Structures. Solutions in Ada,
Java and C ++, Thomson, 2005.
 Campos Laclaustra, J .: Notes on Data Structures and Algorithms, second edition, 2018.
(Online.)

También podría gustarte