Zwraca różnicę pomiędzy najniższym i najwyższym Key - binarne drzewo poszukiwań

głosy
4

To jest przeszłość egzamin papier na binarne drzewo poszukiwań Jestem próbujących. I nie ma sposobu, aby sprawdzić, czy wynik jest prawidłowy, ponieważ nie jestem w stanie zbudować jeden z tych rzeczy.

Pytanie jest w tytule

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;
    }
}

Czy ktoś może sugerować, co trzeba zmienić, aby uzyskać 5/5 oznaczenia: D - jedyną rzeczą, którą musisz zrobić, to napisać spanmetodę, nagłówek został podany do nas.

Utwórz 12/05/2010 o 16:55
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Trzeba zdefiniować na dwa sposoby, min(Tree)a max(Tree), następnie span(Tree t)określa się jako max(t) - min(t). spanSam nie powinno być rekurencyjne, ale można zrobić mini maxrekurencyjne, jeśli chcesz.

Należy pamiętać, że mini maxnie mają być ich własne metody. Jeśli nie obchodzi co czyni je wyróżniać jako własnych jednostek, które można umieścić to wszystko w spanten sposób:

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;
}
Odpowiedział 12/05/2010 o 17:21
źródło użytkownik

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