Высота бинарного дерева в Java без параметров
Я знаю, что есть много функций, которые можно найти там, где вы можете легко получить высоту дерева двоичного поиска, рекурсивно вызывая функцию и используя корень узла в качестве параметра каждый раз для левого и правого поддерева. Но что я должен делать, когда не буду принимать параметры в Treap, но он по-прежнему возвращает int. Я был в состоянии вызвать другие методы рекурсивно, но я остановился на этом. Некоторая помощь будет принята с благодарностью!
Это то, что у меня есть, но я в основном считаю, что это неправильно
public int height()
{
if(temp == null)
return 0;
else
{
temp = temp.left;
temp = temp.right;
return Math.max(height(), height()) + 1;
}
}
1 ответ
Поскольку вы пишете Java, нет необходимости явно передавать параметры: вы получаете один параметр "бесплатно", а именно целевой объект вызова метода.
Чтобы это работало, height()
Метод должен быть определен на объекте узла дерева. Теперь определение метода простое: для вашего Node
объект, чтобы узнать его height()
нужно вернуть либо
- большая из высот вашего левого и правого поддеревьев, плюс один для самого узла, или
- один, если левые и правые поддеревья
null
,