Página principal | Lista de namespace | Lista de componentes | Lista de archivos | Miembros del Namespace  | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

Referencia del Archivo Tree_Ex.h

Algunas funciones de ejemplos de uso de la clase Tree<E>. Más...

#include "Tree_L.h"
#include <iostream>
#include <iomanip>
#include <cassert>
#include <string>
#include <climits>

Ir al código fuente de este archivo.

Namespaces

namespace  std

Funciones

template<class E>
void My_Count0 (const Tree< E > &T, unsigned &n)
 Incrementa "n" en el número de hijos que tiene el sub-árbol cuya raíz es "T".
template<class E>
unsigned My_Count (const Tree< E > &T)
 Retorna la cantidad de valores almacenados en el árbol.
template<class E>
unsigned Count_Children (const Tree< E > &T)
 Retorna la cantidad de hijos de "T".
template<class E>
bool Comp (const Tree< E > &p, const Tree< E > &q)
 Compara recursivamente los árboles "p" y "q".
template<class E>
void Print (const Tree< E > &T, unsigned indent=0, unsigned num=0)
 Graba en "cout" el contenido del árbol "T".
string DOS_string (string &s)
 Cambia las letras de cajita para que el árbol de Ztree_Print() se vea bonito en DOS.
template<class E>
void Ztree_Print (const Tree< E > &T, string s="", unsigned level=0, bool last_child=true)
 Graba en "cout" el contenido de "T" de la forma en que Ztree.com despliega un árbol.
template<class E>
void Mirror (Tree< E > &T)
 Convierte a "T" en su sub-árbol espejo.
template<class E>
bool Ancestor (const Tree< E > &Child, const Tree< E > &Father)
 Retorna true si "Father" es un ancestro de "Child".
template<class E>
bool Is_Leaf (const Tree< E > &T)
 Retorna true cuando el sub-árbol "T" es una hoja, o sea, cuando "T" no tiene hijos.
template<class E>
bool Is_Root (const Tree< E > &T)
 Retorna true cuando el sub-árbol "T" es una raíz, o sea, cuando "T" no tiene padre.
template<class E>
void Height0 (const Tree< E > &T, unsigned &max, unsigned actual)
 Calcula la altura de sub-árbol.
template<class E>
unsigned Height (const Tree< E > &T)
 Retorna la altura de "T".
template<class E>
unsigned Depth (const Tree< E > &T)
 Retorna la longitud del camino desde "T" hasta la raíz del árbol.
template<class E>
unsigned Arity (Tree< E > &T)
 Retorna la máxima cantidad de hijos que tienen "T" y todos sus sub-árboles.
template<class E>
bool Is_Binary (const Tree< E > &T)
 Retorna "true" cuando el árbol es binario.
template<class E>
unsigned Length (const Tree< E > &n1, Tree< E > &n2)
 Esta función retorna el número de aristas que hay en el único camino que une la raíz de "n1" con la de "n2".
template<class E>
void New_Root (Tree< E > &T, Tree< E > &sT)
 Transforma el árbol "T" que contiene como sub-árbol a"sT" para que la raíz de "T" sea "sT".


Descripción detallada

Algunas funciones de ejemplos de uso de la clase Tree<E>.

Autor:
Adolfo Di Mare <adolfo@di-mare.com>
Fecha:
2006

Definición en el archivo Tree_Ex.h.


Documentación de las funciones

template<class E>
void My_Count0 const Tree< E > &  T,
unsigned &  n
 

Incrementa "n" en el número de hijos que tiene el sub-árbol cuya raíz es "T".

  • Cambia el valor de "n"
  • No cuenta a la raíz de "T"
  • Usualmente se invoca así:
     { n = 1; My_Count0(T, n); } 
    

Precondición:
! T. Empty()

Definición en la línea 34 del archivo Tree_Ex.h.

template<class E>
unsigned My_Count const Tree< E > &  T  ) 
 

Retorna la cantidad de valores almacenados en el árbol.

Definición en la línea 45 del archivo Tree_Ex.h.

template<class E>
unsigned Count_Children const Tree< E > &  T  ) 
 

Retorna la cantidad de hijos de "T".

Definición en la línea 57 del archivo Tree_Ex.h.

template<class E>
bool Comp const Tree< E > &  p,
const Tree< E > &  q
 

Compara recursivamente los árboles "p" y "q".

Definición en la línea 78 del archivo Tree_Ex.h.

template<class E>
void Print const Tree< E > &  T,
unsigned  indent = 0,
unsigned  num = 0
 

Graba en "cout" el contenido del árbol "T".

  • Indenta a los hijos "indent" espacios dobles
  • Numera a los hijos a partir de "num" usando 2 dígitos
  • Usualmente se invoca así: Print(T);

Definición en la línea 112 del archivo Tree_Ex.h.

string DOS_string string &  s  ) 
 

Cambia las letras de cajita para que el árbol de Ztree_Print() se vea bonito en DOS.

Postcondición:
No funciona porque Win <==> cout convierten a su antojo las letras

Definición en la línea 133 del archivo Tree_Ex.h.

template<class E>
void Ztree_Print const Tree< E > &  T,
string  s = "",
unsigned  level = 0,
bool  last_child = true
 

Graba en "cout" el contenido de "T" de la forma en que Ztree.com despliega un árbol.

  • "level" indica que el nivel de anidamiento desde la raíz hasta el nodo
  • "last_child" indica se éste es el último hijo de su padre

Comentarios:
Forma usual de invocación: Ztree_Print( T );
    a
    |--b                           a
    |  |--f                       /|\
    |  |--g                     / / \ \
    |  +--h                    b  c d  e
    |--c                      /|\     /|\
    |--d                     f g h   i j k
    +--e                              / \
       |--i                           l m
       |--j                            / \
       |  |--l                         n o
       |  +--m
       |     |--n
       |     +--o
       +--k

Definición en la línea 165 del archivo Tree_Ex.h.

template<class E>
void Mirror Tree< E > &  T  ) 
 

Convierte a "T" en su sub-árbol espejo.

  • El sub-árbol es espejo es aquel en el que, recursivamente, los hijos quedan en orden inverso del orden en el que aparecían originalmente en "T".

           a                a
          /|\              /|\
        / / \ \          / / \ \
       b  c d  e        e  d c  b
      /|\     /|\      /|\     /|\
     f g h   i j k    k j i   h g f
              / \      / \
              l m      m l
               / \    / \
               n o    o n

Definición en la línea 225 del archivo Tree_Ex.h.

template<class E>
bool Ancestor const Tree< E > &  Child,
const Tree< E > &  Father
 

Retorna true si "Father" es un ancestro de "Child".

  • La raíz no tiene ancestros.
  • Un árbol vacío no tiene ancestros.

Definición en la línea 267 del archivo Tree_Ex.h.

template<class E>
bool Is_Leaf const Tree< E > &  T  )  [inline]
 

Retorna true cuando el sub-árbol "T" es una hoja, o sea, cuando "T" no tiene hijos.

  • Un sub-árbol vacío no es una hoja porque no tiene raíz.

Definición en la línea 285 del archivo Tree_Ex.h.

template<class E>
bool Is_Root const Tree< E > &  T  )  [inline]
 

Retorna true cuando el sub-árbol "T" es una raíz, o sea, cuando "T" no tiene padre.

  • Un sub-árbol vacío no es una raíz porque no tiene raíz.

Definición en la línea 293 del archivo Tree_Ex.h.

template<class E>
void Height0 const Tree< E > &  T,
unsigned &  max,
unsigned  actual
 

Calcula la altura de sub-árbol.

  • Esta función es el paso recursivo necesario para implementar Height()
  • Recorre recursivamente el árbol y recuerda la máxima profundidad encontrada en "max".
  • "actual" es la profundidad del nodo actual.

Definición en la línea 302 del archivo Tree_Ex.h.

template<class E>
unsigned Height const Tree< E > &  T  )  [inline]
 

Retorna la altura de "T".

  • La altura es la distanca desde "T" hasta la hoja más profunda en el sub-árbol formado por todos los descendientes de "T".
  • La altura de un nodo hoja siempre es cero.
  • [ Is_Leaf(T) == true ] ==> [ Height(T) == 0 ]

                                     [ Depth() Height() ]
    a [0 4]                a               [0 4]
    |--b [1 1]             |--b            [1 1]
    |  |--f [2 0]          |  |--f         [2 0]
    |  |--g [2 0]          |  |--g         [2 0]
    |  +--h [2 0]          |  +--h         [2 0]
    |--c [1 0]             |--c            [1 0]
    |--d [1 0]             |--d            [1 0]
    +--e [1 3]             +--e            [1 3]
       |--i [2 0]             |--i         [2 0]
       |--j [2 2]             |--j         [2 2]
       |  |--l [3 0]          |  |--l      [3 0]
       |  +--m [3 1]          |  +--m      [3 1]
       |     |--n [4 0]       |     |--n   [4 0]
       |     +--o [4 0]       |     +--o   [4 0]
       +--k [2 0]             +--k         [2 0]

Definición en la línea 341 del archivo Tree_Ex.h.

template<class E>
unsigned Depth const Tree< E > &  T  ) 
 

Retorna la longitud del camino desde "T" hasta la raíz del árbol.

  • Retorna la profundidad del sub-árbol respecto de su raíz
  • La profundidad de la raíz del árbol es cero.
  • T.Empty() ==> [ Depth(T) == 0 ]

Definición en la línea 355 del archivo Tree_Ex.h.

template<class E>
unsigned Arity Tree< E > &  T  ) 
 

Retorna la máxima cantidad de hijos que tienen "T" y todos sus sub-árboles.

Definición en la línea 370 del archivo Tree_Ex.h.

template<class E>
bool Is_Binary const Tree< E > &  T  ) 
 

Retorna "true" cuando el árbol es binario.

Definición en la línea 387 del archivo Tree_Ex.h.

template<class E>
unsigned Length const Tree< E > &  n1,
Tree< E > &  n2
 

Esta función retorna el número de aristas que hay en el único camino que une la raíz de "n1" con la de "n2".

  • Si "n1" y "n2" pertenecen a árboles diferente, retorna UINT_MAX == infinito

Definición en la línea 398 del archivo Tree_Ex.h.

template<class E>
void New_Root Tree< E > &  T,
Tree< E > &  sT
 

Transforma el árbol "T" que contiene como sub-árbol a"sT" para que la raíz de "T" sea "sT".

  • No hace nada si T.Father().Emtpy() ["T" ya es la raíz del árbol]
  • Traslada a Father() para que sea el hijo más izquierdo de manera que ocupe la posición "n-1" donde n == Leftmost().Child_Number()"
  • Traslada a los hermanos izquierdos para que estén antes de la antigua raíz
  • Traslada a los hermanos derechos para que estén después de la antigua raíz

           a                      e
          /|\                    /|\
        / / \ \                / / \ \
       b  c d  e              a  i j  k
      /|\     /|\            /|\
     f g h   i j k          b c d
                           /|\
                          f g h

Precondición:
  • Leftmost().Child_Number() > 0
  • Ancestor(sT, T) == true

Definición en la línea 450 del archivo Tree_Ex.h.


Generado el Tue Jun 30 06:20:32 2009 para Uso de TL::Tree y TV::Tree: por  doxygen 1.3.9.1