Class ArbolBinario<T>

java.lang.Object
mx.unam.ciencias.edd.ArbolBinario<T>
All Implemented Interfaces:
Iterable<T>, Coleccion<T>
Direct Known Subclasses:
ArbolBinarioCompleto, ArbolBinarioOrdenado

public abstract class ArbolBinario<T> extends Object implements Coleccion<T>

Clase abstracta para árboles binarios genéricos.

La clase proporciona las operaciones básicas para árboles binarios, pero deja la implementación de varias en manos de las subclases concretas.

  • Field Details

    • raiz

      protected ArbolBinario<T>.Vertice raiz
      La raíz del árbol.
    • elementos

      protected int elementos
      El número de elementos
  • Constructor Details

    • ArbolBinario

      public ArbolBinario()
      Constructor sin parámetros. Tenemos que definirlo para no perderlo.
    • ArbolBinario

      public ArbolBinario(Coleccion<T> coleccion)
      Construye un árbol binario a partir de una colección. El árbol binario tendrá los mismos elementos que la colección recibida.
      Parameters:
      coleccion - la colección a partir de la cual creamos el árbol binario.
  • Method Details

    • nuevoVertice

      protected ArbolBinario<T>.Vertice nuevoVertice(T elemento)
      Construye un nuevo vértice, usando una instancia de ArbolBinario<T>.Vertice. Para crear vértices se debe utilizar este método en lugar del operador new, para que las clases herederas de ésta puedan sobrecargarlo y permitir que cada estructura de árbol binario utilice distintos tipos de vértices.
      Parameters:
      elemento - el elemento dentro del vértice.
      Returns:
      un nuevo vértice con el elemento recibido dentro del mismo.
    • altura

      public int altura()
      Regresa la altura del árbol. La altura de un árbol es la altura de su raíz.
      Returns:
      la altura del árbol.
    • getElementos

      public int getElementos()
      Regresa el número de elementos que se han agregado al árbol.
      Specified by:
      getElementos in interface Coleccion<T>
      Returns:
      el número de elementos en el árbol.
    • contiene

      public boolean contiene(T elemento)
      Nos dice si un elemento está en el árbol binario.
      Specified by:
      contiene in interface Coleccion<T>
      Parameters:
      elemento - el elemento que queremos comprobar si está en el árbol.
      Returns:
      true si el elemento está en el árbol; false en otro caso.
    • busca

      public VerticeArbolBinario<T> busca(T elemento)
      Busca el vértice de un elemento en el árbol. Si no lo encuentra regresa null.
      Parameters:
      elemento - el elemento para buscar el vértice.
      Returns:
      un vértice que contiene el elemento buscado si lo encuentra; null en otro caso.
    • raiz

      public VerticeArbolBinario<T> raiz()
      Regresa el vértice que contiene la raíz del árbol.
      Returns:
      el vértice que contiene la raíz del árbol.
      Throws:
      NoSuchElementException - si el árbol es vacío.
    • esVacia

      public boolean esVacia()
      Nos dice si el árbol es vacío.
      Specified by:
      esVacia in interface Coleccion<T>
      Returns:
      true si el árbol es vacío, false en otro caso.
    • limpia

      public void limpia()
      Limpia el árbol de elementos, dejándolo vacío.
      Specified by:
      limpia in interface Coleccion<T>
    • equals

      public boolean equals(Object objeto)
      Compara el árbol con un objeto.
      Overrides:
      equals in class Object
      Parameters:
      objeto - el objeto con el que queremos comparar el árbol.
      Returns:
      true si el objeto recibido es un árbol binario y los árboles son iguales; false en otro caso.
    • toString

      public String toString()
      Regresa una representación en cadena del árbol.
      Overrides:
      toString in class Object
      Returns:
      una representación en cadena del árbol.
    • vertice

      protected ArbolBinario<T>.Vertice vertice(VerticeArbolBinario<T> vertice)
      Convierte el vértice (visto como instancia de VerticeArbolBinario) en vértice (visto como instancia de ArbolBinario<T>.Vertice). Método auxiliar para hacer esta audición en un único lugar.
      Parameters:
      vertice - el vértice de árbol binario que queremos como vértice.
      Returns:
      el vértice recibido visto como vértice.
      Throws:
      ClassCastException - si el vértice no es instancia de ArbolBinario<T>.Vertice.