Вернуть разницу между самым низким и самым высоким ключом - двоичное поиск
-
26-09-2019 - |
Вопрос
Это прошедшая экзаменационная бумага на двоичных валках, которые я пытаюсь. У меня нет способа проверить, правильно ли вывод, так как я не способен построить одну из этих вещей.
Вопрос в названии
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;
}