2013-10-15 2 views
0

Я знаю, что есть много функций, которые можно найти там, где вы можете легко получить высоту двоичного дерева поиска, рекурсивным вызовом функции и использованием корня узла в качестве параметра каждый раз для левого и правого поддерева. Но что я должен делать, когда я не буду принимать параметры в Treap, но он все равно возвращает int. Я мог рекурсивно вызывать другие методы, но я остановился на этом. Некоторая помощь будет принята с благодарностью!высота бинарного дерева в java без параметров

Это то, что у меня есть, но я в основном считают, что это неправильно

public int height() 
{ 
    if(temp == null) 
     return 0; 
    else 
    { 
     temp = temp.left; 
     temp = temp.right; 
     return Math.max(height(), height()) + 1; 
    } 
} 
+4

Добро пожаловать в Переполнение стека! Пожалуйста, покажите свою последнюю неудачную попытку написать это самостоятельно. Как правило, гораздо проще исправить код, чем писать код с нуля. – dasblinkenlight

ответ

1

Поскольку вы пишете Java, не нужно передавать параметры в явном виде: вы получаете один параметр «бесплатно» - а именно, цель объект вызова метода.

Для этого необходимо определить метод height() на узле дерева. Теперь определение метода просто: для того, чтобы вашего Node объекта, чтобы узнать height(), он должен возвращать либо

  • тем больше высот левых и и ваши правых поддерев, плюс один для самого узла, или
  • один, если левое и правое поддеревья null.
+0

Итак, из того, что я понимаю (и я не могу, потому что я могу быть плохим в понимании вещей). Является ли высота определяемой в моем классе Node. и каждый раз, когда он переходит на новую высоту уровня, увеличивается. Затем в моей функции высоты я могу рекурсивно вызывать мои корневые данные, чтобы найти наибольшее число высот, которое я могу найти? – Nova

+0

@Nova Там не должно ничего прибавлять: все вычисления должны выполняться внутри метода 'height()'. Трюк для записи рекурсивных функций заключается в том, что он уже написан и использует его результаты для вычисления возвращаемого значения. Таким образом, повторения не существует: вы вызываете 'height()' в корневом 'Node', и он возвращает вам высоту. – dasblinkenlight

Смежные вопросы