Высота бинарного дерева в 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,
Другие вопросы по тегам