Возвращает разницу между самой низкой и самой высокой ключ - бинарное дерево поиска

голоса
4

Это прошлый экзамен бумаги на бинарных деревьев поиска Я пытаю. У меня нет возможности проверить, если вывод является правильным, поскольку я не способен построить одну из этих вещей.

Вопрос в названии

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

Можно ли предположить , что мне нужно изменить , чтобы получить 5/5 метки: D - единственное , что мы должны сделать , это написать spanметод, заголовок был дан нам.

Задан 12/05/2010 в 16:55
источник пользователем
На других языках...                            


1 ответов

голоса
1

Вам нужно определить два метода, min(Tree)и max(Tree), затем span(Tree t)определяется как max(t) - min(t). spanсам по себе не должна быть рекурсивной, но вы можете сделать minи maxрекурсивной , если вы хотите.

Обратите внимание , что minи maxне должен быть своими собственными методами. Если вы не заботиться о делает их выступать в качестве своих единиц, вы можете поместить все это в spanтак:

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;
}
Ответил 12/05/2010 в 17:21
источник пользователем

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