Devolver la diferencia entre la llave bajo y más alto - Árbol de búsqueda binaria

votos
4

Se trata de una hoja de examen pasado en árboles binarios de búsqueda que estoy tratando. No tengo forma de comprobar si la salida es correcta ya que no soy capaz de construir una de estas cosas.

la pregunta está en el título

class Tree{
    Tree left;
    Tree right;
    int key;

   public static int span(Tree tree)
   {
        if ( tree == null ){
             return null;
        }

        if( tree.left != null)
             int min = span(tree.left);
         }

        if( tree.right != null){
             int max = span(tree.right);
         }
         return max - min;
    }
}

¿Alguien podría sugerir lo que tengo que cambiar para conseguir 5/5 marcas: D - lo único que tenemos que hacer es escribir el spanmétodo, la cabecera se le dio por nosotros.

Publicado el 12/05/2010 a las 16:55
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Es necesario definir dos métodos, min(Tree)y max(Tree), a continuación, span(Tree t)se define como max(t) - min(t). spansí no debería ser recursivo, pero se puede hacer miny maxrecursivo si lo desea.

Tenga en cuenta que miny maxno tienen que ser sus propios métodos. Si no se preocupan por hacer que se destacan como sus propias unidades, se puede poner todo en spaneste aspecto:

int span(Tree t) {
   Tree tMin = t;
   while (tMin.left != null) {
      tMin = tMin.left;
   }

   Tree tMax = t;
   while (tMax.right != null) {
      tMax = tMax.right;
   }

   return tMax.key - tMin.key;
}
Respondida el 12/05/2010 a las 17:21
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more