next up previous contents
Siguiente: Recorridos de árbol binario Subir: Representación en C/C++ de Anterior: Representación en C/C++ de   Índice General

Representación de los nodos

Los nodos de los árboles binarios son estructuras en C/C++ que estan compuestas por tres partes:

Usando una implementación de arreglos tenemos:

#define numNodes 500
struct nodeType{
  int info;
  int left;
  int right;
  int father;
};
struct nodeType node[numNodes];

y usando una representación con memoria dinámica, los nodos de un árbol se puede representar tambien con una estructura en C/C++ :

struct nodeType{
  int info;
  struct nodeType *left;
  struct nodeType *right;
  struct nodeType *father;
};
struct nodeType *nodePtr;

La operaciones info(p), left(p), right(p) y father(p) se implementarían mediante referencias a p->info, p->left, p->right y p->father respectivamente. Las rutinas getnode y freenode simplemente asignan y liberan nodos usando las rutinas malloc y free.

nodePtr makeTree(int x){
  nodePtr p;
  p = getNode();
  p->info = x;
  p->left = NULL;
  p->right = NULL;
  return p;
}

La rutina setLeft(p,x) establece un nodo con contenido x como el hijo izquierdo de node(p).

void setLeft(nodePtr p, int x){
  if(p == NULL)
     std::cout<<"Insercion nula\n";
    else
     if(p->left != NULL)
       std::cout<<"Insercion no valida\n";
      else
       p->left=maketree(x);
}

La rutina para setRight(p,x) es similar a la rutina anterior.

Cuando se establece la diferencia entre los nodos de hojas y los no-hojas, los nodos que no son hojas se llaman nodos internos y los nodos que sí son hojas se llaman nodos externos.


next up previous contents
Siguiente: Recorridos de árbol binario Subir: Representación en C/C++ de Anterior: Representación en C/C++ de   Índice General
Abdiel Caceres-Gonzalez Jun-02-2005