cl.cromer.estructuras

## Class Arbol

- java.lang.Object
- - cl.cromer.estructuras.Arbol

    public class Arbol
    extends java.lang.Object

Esta clase tiene la estrutura de dato de tipo arbol.

Author:
  Chris Cromer

### Nested Class Summary

Nested Classes
`static class` `Arbol.Tipos` Esta clase contiene los arbolTipo de arboles.

### Field Summary

Fields
`private int` `altura` La altura del arbol.
`private ArbolNodo` `arbol` El arbol.
`private java.util.List<java.util.List<ArbolNodo>>` `niveles` Los nivles del arbol con todos sus nodos.
`private java.util.List<ArbolNodo>` `order` El orden que ha sido usado.
`private int` `size` La cantidad de nodos que están en el arbol.

### Constructor Summary

Constructors
Constructor and Description
`Arbol()` Inicilizar el arbol.

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `calcularAltura(ArbolNodo nodo)` Encontrar y devolver la altura del arbol usando recursividad.
`void` `calcularNiveles(ArbolNodo nodo, int nivel)` Calcular los nivles del arbol usando recursividad.
`boolean` `eliminar(int valor)` Eliminar un valor del arbol.
`int` `getAltura()` Devolver la altura del arbol.
`ArbolNodo` `getArbol()` Devolver el arbol.
`java.util.List<java.util.List<ArbolNodo>>` `getNiveles()` Devolver la lista de nivles del arbol.
`java.util.List<ArbolNodo>` `inOrder()` Ordenar el arbol usando inOrder.
`void` `inOrder(ArbolNodo nodo)` El meteodo recursivo de inOrder que acumulará los nodos en una lista.
`boolean` `insertar(int valor)` Insertar un valor al arbol.
`java.util.List<ArbolNodo>` `postOrder()` Ordenar el arbol usando postOrder.
`void` `postOrder(ArbolNodo nodo)` El meteodo recursivo de postOrder que acumulará los nodos en una lista.
`java.util.List<ArbolNodo>` `preOrder()` Ordenar el arbol usando preOrder.
`void` `preOrder(ArbolNodo nodo)` El meteodo recursivo de preOrder que acumulará los nodos en una lista.
`boolean` `rotarDerecha(int valor)` Rotar el arbol usando el hijo a la izquerda como un pivot.
`boolean` `rotarIzquerda(int valor)` Rotar el arbol usando el hijo a la derecha como un pivot.
`private void` `setAltura(int altura)` Cambiar la altura del arbol.
`int` `size()` Devolver la cantidad de nodos que están en el arbol.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### arbol

    private ArbolNodo arbol

El arbol.

#### size

    private int size

La cantidad de nodos que están en el arbol.

#### altura

    private int altura

La altura del arbol.

#### niveles

    private java.util.List<java.util.List<ArbolNodo>> niveles

Los nivles del arbol con todos sus nodos.

#### order

    private java.util.List<ArbolNodo> order

El orden que ha sido usado.

### Constructor Detail

#### Arbol

    public Arbol()

Inicilizar el arbol.

### Method Detail

#### insertar

    public boolean insertar(int valor)

Insertar un valor al arbol.

Parameters:
  `valor` - int: El valor a insertar.
Returns:
  boolean: Verdad si fue insertado, falso si ya existe el nodo.

#### eliminar

    public boolean eliminar(int valor)

Eliminar un valor del arbol.

Parameters:
  `valor` - int: El valor a elminiar.
Returns:
  boolean: Verdad si fue eliminado, falso si no existe.

#### rotarIzquerda

    public boolean rotarIzquerda(int valor)

Rotar el arbol usando el hijo a la derecha como un pivot.

Parameters:
  `valor` - int: El valor a rotar.
Returns:
  boolean: Verdad si fue rotado.

#### rotarDerecha

    public boolean rotarDerecha(int valor)

Rotar el arbol usando el hijo a la izquerda como un pivot.

Parameters:
  `valor` - int: El valor a rotar.
Returns:
  boolean: Verdad si fue rotado.

#### preOrder

    public java.util.List<ArbolNodo> preOrder()

Ordenar el arbol usando preOrder.

Returns:
  List: La lista del orden.

#### inOrder

    public java.util.List<ArbolNodo> inOrder()

Ordenar el arbol usando inOrder.

Returns:
  List: La lista del orden.

#### postOrder

    public java.util.List<ArbolNodo> postOrder()

Ordenar el arbol usando postOrder.

Returns:
  List: La lista del orden.

#### preOrder

    public void preOrder(ArbolNodo nodo)

El meteodo recursivo de preOrder que acumulará los nodos en una lista.

Parameters:
  `nodo` - ArbolNodo: El nodo a trabajar.

#### inOrder

    public void inOrder(ArbolNodo nodo)

El meteodo recursivo de inOrder que acumulará los nodos en una lista.

Parameters:
  `nodo` - ArbolNodo: El nodo a trabajar.

#### postOrder

    public void postOrder(ArbolNodo nodo)

El meteodo recursivo de postOrder que acumulará los nodos en una lista.

Parameters:
  `nodo` - ArbolNodo: El nodo a trabajar.

#### getArbol

    public ArbolNodo getArbol()

Devolver el arbol.

Returns:
  ArbolNodo: La raiz del arbol.

#### size

    public int size()

Devolver la cantidad de nodos que están en el arbol.

Returns:
  int: La cantidad.

#### getAltura

    public int getAltura()

Devolver la altura del arbol.

Returns:
  int: La altura.

#### setAltura

    private void setAltura(int altura)

Cambiar la altura del arbol.

Parameters:
  `altura` - int: La altura nueva.

#### getNiveles

    public java.util.List<java.util.List<ArbolNodo>> getNiveles()

Devolver la lista de nivles del arbol.

Returns:
  List: La lista de niveles.

#### calcularAltura

    public int calcularAltura(ArbolNodo nodo)

Encontrar y devolver la altura del arbol usando recursividad.

Parameters:
  `nodo` - ArbolNodo: El nodo a trabajar.
Returns:
  int: La altura.

#### calcularNiveles

    public void calcularNiveles(ArbolNodo nodo,
                                int nivel)

Calcular los nivles del arbol usando recursividad.

Parameters:
  `nodo` - ArbolNodo: El nodo a trabajar.
  `nivel` - int: El Nivel donde está el nodo.