Professional Documents
Culture Documents
Facultad : Ingeniera
Escuela : Computacin
Asignatura: Programacin III
Objetivos
Implementar la estructura de rboles B y rboles Rojo Negro, utilizando C#.
Introduccin
Un rbol rojo negro es un tipo abstracto de datos, concretamente es un rbol binario de
bsqueda equilibrado, una estructura de datos utilizada en informtica y ciencias de la
computacin. Puede buscar, insertar y borrar en un tiempo O(log n), donde n es el
nmero de elementos del rbol.
En los rboles rojo-negro las hojas no son relevantes y no contienen datos. A la hora de
implementarlo en un lenguaje de programacin, para ahorrar memoria, un nico nodo
(nodo-centinela) hace de nodo hoja para todas las ramas. As, todas las referencias de los
nodos internos a las hojas van a parar al nodo centinela.
En los rboles rojo-negros, como en todos los rboles binarios de bsqueda, es posible moverse
ordenadamente a travs de los elementos de forma eficiente si hay forma de localizar el padre de
cualquier nodo. El tiempo de desplazarse desde la raz hasta una hoja a travs de un rbol
equilibrado que tiene la mnima altura posible es de O(log n).
Propiedades:
Un rbol rojo-negro es un rbol binario de bsqueda en el que cada nodo tiene un atributo
de color cuyo valor es o bien rojo o bien negro. Adems de los requisitos impuestos a los
rboles binarios de bsqueda convencionales, se deben satisfacer los siguientes para
tener un rbol rojo-negro vlido:
1. Todo nodo es o bien rojo o bien negro.
2. La raz es negra.
3. Todas las hojas son negras (las hojas son los hijos nulos).
4. Los hijos de todo nodo rojo son negros (tambin llamada "Propiedad del rojo").
5. Cada camino simple desde un nodo a una hoja descendiente contiene el mismo
nmero de nodos negros, ya sea contando siempre los nodos negros nulos, o bien no
contndolos nunca (el resultado es equivalente). Tambin es llamada "Propiedad del
camino", y al nmero de nodos negros de cada camino, que es constante para todos los
Caminos, se le denomina "Altura negra del rbol", y por tanto el camino no puede tener
dos rojos seguidos.
6. El camino ms largo desde la raz hasta una hoja no es ms largo que 2 veces el
camino ms corto desde la raz del rbol a una hoja en dicho rbol. El resultado es que
dicho rbol est aproximadamente equilibrado
MATERIAL Y EQUIPO
N
Cantidad
Descripcin
Gua de Programacin #7
Programacin III
Dispositivo de memoria
Procedimiento
Materiales y equipo
Procedimiento
1. Cree un proyecto modo consola en Visual C# .NET y nmbrelo como
BinarySearchTree.cs
using System;
using Sytem.Collections.Generic;
using System.Text;
namespace BinaryTree
{
public class Node
{
public String data;
public Object key;
public Node left, right;
public Node(Object key, String data)
{
this.data = data;
this.key = key;
left = null;
right = null;
}
}
public class BinarySearchTree
{
private Node root;
private int count = 0;
public BinarySearchTree()
{
root = null;
count = 0;
}
public int Count
{
get
{
return this.count;
}
set
{
this.count = value;
}
}
public Node Root
{
get { return this.root; }
}
private void CreateNode(Node node, ref Node tree)
{
if (tree == null)
{
Display(temp.left);
Console.WriteLine(temp.data);
Display(temp.right);
}
}
}
public sealed class RedBlackTree : Tree
{
private Color Black = Color.Black;
private Color Red = Color.Red;
private Node parentNode;
private Node grandParentNode;
private Node tempNode;
public RedBlackTree()
{
}
public void Insert(IComparable item)
{
currentNode = parentNode = grandParentNode = root;
freshNode.data = item;
int returnedValue = 0;
while (Compare(item, currentNode) != 0)
{
tempNode = grandParentNode;
grandParentNode = parentNode;
parentNode = currentNode;
returnedValue = Compare(item, currentNode);
if (returnedValue < 0)
currentNode = currentNode.left;
else
currentNode = currentNode.right;
if (currentNode.left.color == Color.Red && currentNode.right.color == Color.Red)
ReArrange(item);
}
if (currentNode == freshNode)
1
0
Rojo
Negro
tiempo
de
busqueda:
"
binario
tiempo
de
busqueda:
"
timeElasped.Milliseconds.ToString() + "milisegundos.");
Console.Read();
}
}
}
Investigacin complementaria.
. Hacer un men que permita insertar n valores (automtico o manual) y que adems me
permita realizar bsquedas mediante el rbol rojo negro o mediante el rbol de bsqueda
y que imprima el tiempo de ejecucin.
1
1
Investigue el funcionamiento de los arboles B (B- Trees). Qu diferencias y similitudes
tienen con los otros rboles desarrollados.
Bibliografa.
DEITEL, HARVEY M. / DEITEL, PAUL J. Cmo programar en C#. Editorial Pearson Prentice Hall, Mxico
2004
JOYANES AGUILAR, LUIS. Programacin en C# - Algoritmos, estructuras de datos y objetos. Editorial
McGraw Hill, Espaa 2006