Introducción a los árboles
Un árbol es una de las EDD más utilizadas para resolver multitud de problemas (y muy utilizada también en juegos).
En una EDD no lineal.
Un árbol se define recursivamente así: o es vacío o consiste en un nodo que contiene datos y punteros hacia otros árboles.
Idea gráfica del concepto de árbol (imagen)
Conceptos asociados:
raíz
Hoja
Ascendiente
Descendiente
Hermano
Padre
Hijo
Un caso concreto: árbol binario
Cada nodo tiene como máximo dos hijos.
Esto hace que la implementación sea más sencilla (cada nodo incluye dos punteros para apuntar a cada uno de los hijos, el izquierdo y el derecho):
struct nodo{
struct info elemento;
struct nodo *izq;
sruct nodo *dcha;
};
struct nodo *arbol;
Implementación de un árbol general
Un árbol en general no tiene limitados el número de hijos que puede tener cada nodo, y por tanto no puedo establecer a priori un número de punteros en la estructura para apuntar a los hijos.
Una posible forma de hacerlo, sería teniendo una lista de punteros a los hijos almacenada en cada nodo, junto con la información que guarda el nodo. Es decir, para implementar un árbol general, haríamos uso de otra EDD.
Operaciones habituales con árboles
Insección
Eliminación
Búsqueda
Recorrido:
- Inorden: primero se recorre el subárbol izquierdo, luego se lee el valor de nodo y finalmente se recorre el subárbol derecho.
- Preorden: primero se lee el valor del nodo y después se recorren los subárboles.
- Postorden: se recorren primero el subárbol izquierdo y el derecho y después se lee el valor del nodo.
Aplicación de los árboles
Se utilizan en problemas que involucran jerarquía (por ejemplo, miembros de una familia), ramificación (como los árboles de juegos, que involucran tomar la mejor decisión de las posibles, tras analizar todas las consecuencias), clasificación y búsqueda eficiente.
Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.
Deseadme suerte.
Deseadme suerte.
jueves, 29 de enero de 2015
Suscribirse a:
Enviar comentarios (Atom)
Etiquetas actuales
BD
(67)
DEF
(64)
PROG
(64)
SQL
(44)
Java
(29)
PRACTICAS
(20)
php
(18)
DI
(16)
PRESTASHOP
(16)
PROGRAMACIÓN WEB
(16)
HTML
(13)
SGE
(12)
ERP
(9)
CONSULTAS
(8)
css
(8)
Linux
(5)
XML
(5)
Android
(4)
PDM
(4)
C
(3)
NetBeans
(3)
PSP
(3)
SMARTY
(3)
comandos
(3)
HOOK
(2)
POST
(2)
XSD
(2)
cURL
(2)
JS
(1)
MEDIA-QUERYS
(1)
PDO
(1)
RESPONSIVE
(1)
TPL
(1)
TRADUCCIÓN
(1)
app_inventor
(1)
Todas las etiquetas
EJER
(78)
BD
(67)
DEF
(64)
PROG
(64)
SQL
(44)
c#
(40)
Programación
(39)
Ficheros
(36)
Java
(29)
bases de datos
(21)
PRACTICAS
(20)
lenguajes de marcas
(19)
AD
(18)
Entorno de desarrollo
(18)
php
(18)
PROCEDIMIENTOS
(17)
DI
(16)
FORM
(16)
PRESTASHOP
(16)
PROGRAMACIÓN WEB
(16)
lenguaje C
(16)
E/R
(14)
HTML
(13)
SGE
(12)
Sistemas informáticos
(10)
ERP
(9)
CONSULTAS
(8)
TRANSACCIONES
(8)
TRIGGER
(8)
VISUAL BASIC
(8)
css
(8)
FUNCIONES
(7)
html5
(6)
Ada
(5)
EXAMEN
(5)
Linux
(5)
XML
(5)
estructuras
(5)
Android
(4)
DISEÑO
(4)
INTERFAZ
(4)
LOG
(4)
OpenBravo
(4)
PDM
(4)
ACTUALIZAR
(3)
C
(3)
DIAGRAMA
(3)
Directorios
(3)
NEW
(3)
NOR
(3)
NetBeans
(3)
OLD
(3)
PSP
(3)
SMARTY
(3)
comandos
(3)
css3
(3)
AISLAMIENTOS
(2)
C++
(2)
CONTROLERRORES
(2)
ELIMINAR
(2)
HOOK
(2)
INSERTAR
(2)
INST
(2)
MULTITABLA
(2)
POST
(2)
RECURSIVIDAD
(2)
SUBCONSULTAS
(2)
VISTAS
(2)
XSD
(2)
cURL
(2)
punteros
(2)
AJENA
(1)
BLOQUEOS
(1)
Byte
(1)
CREACION
(1)
CRM
(1)
Configuración
(1)
Controles
(1)
Datos
(1)
GOTFOCUS
(1)
IMAGENES
(1)
INDICES
(1)
JS
(1)
Lenght
(1)
MEDIA-QUERYS
(1)
Mingw
(1)
MonoDeveloped
(1)
OPTIMISTA
(1)
PDO
(1)
PESIMISTA
(1)
RESPONSIVE
(1)
SPEAK
(1)
Scanner
(1)
Serializacion
(1)
Streams
(1)
System
(1)
TPL
(1)
TRADUCCIÓN
(1)
USUARIOS
(1)
UseSystemPasswordChar
(1)
app_inventor
(1)
char
(1)
examenes
(1)
libreoffice
(1)
make
(1)
redes
(1)
0 comentarios:
Publicar un comentario