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

StackOverflow https://stackoverflow.com/questions/2820515

Вопрос

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

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

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

Это было полезно?

Решение

Вам нужно определить два метода, 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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top