Возвратите разницу между самым низким и самым высоким ключом - дерево двоичного поиска - PullRequest
4 голосов
/ 12 мая 2010

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

Вопрос в заголовке

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, заголовок для нас был дан.

1 Ответ

1 голос
/ 12 мая 2010

Вам нужно определить два метода, 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;
}
...