как мы можем получить высоту заданного значения в бинарном дереве поиска (если задано значение String) - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь реализовать метод высоты дерева двоичного поиска. Но входной параметр должен быть только String. Я знаю, как это сделать, когда входным параметром является класс узла. Но я не мог понять это с заданным значением типа String.

public int height(E e) {

  int  nodeHeight=-1;

  if(root==null)
  {
      return nodeHeight;
  }

  if(e.equals(root.element))
  {
      return nodeHeight+1;
  }

  else 

      return 1+Math.max(height(root.left.element), height(root.right.element));

Например. там должны быть имена некоторых людей, которые хранятся в двоичном дереве. Когда я называю высоту (Джимми). методы должны сказать мне, какова высота Джимми в этом текущем двоичном дереве. Кстати, входным параметром может быть только String.

edit: я пытаюсь реализовать другой способ получить высоту

 public int height(E e)
{
    int nodeHeight=-1;
    TreeNode<E> current=root;
    if(root==null)
    {
        return nodeHeight;
    }

    if(current.element==e)
    {
        return nodeHeight+1;
    }

    else if(e.compareTo(current.element)>0)
    {
        current=current.right;
        nodeHeight=height(current.element);

    }

    else if(e.compareTo(current.element)<0)
    {
        current=current.left;
        nodeHeight=height(current.element);
    }

    return nodeHeight;
} // (end height)

но я получаю ошибку StackOverFlow.

1 Ответ

0 голосов
/ 29 марта 2019

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

...