Код для определения высоты дерева - PullRequest
0 голосов
/ 15 мая 2019

вот код функции, которая использует очередь и разделитель для определения высоты дерева, но во время работы я получаю вывод: «Ваша программа заняла больше времени, чем ожидалось».

Примечание: "узел" является корнем дерева

class GfG

{
    int height(Node node) 
    {
       Node pivot;
       int h=0;
       Queue<Node> temp = new LinkedList<Node>();

       temp.add(node);
       temp.add(null);


       while(true)
       {


           if(temp.isEmpty()){break;}

           System.out.println("hi");
           pivot = temp.poll();

           if(pivot != null)
           {
                if(pivot.left != null)
                {

                     temp.add(pivot.left);
                }
                else
                {
                    continue;
                }


                if(pivot.right != null)
                {
                    temp.add(pivot.right);
                }
                else
                {
                    continue;
                }

           }
           else if(pivot == null)
           {
               temp.add(null);
               h=h+1;

           }

       }
       return h;
}

1 Ответ

0 голосов
/ 06 июня 2019

У вас есть бесконечный цикл.Когда вы переходите к последнему элементу в списке, который является null, вы продолжаете всплывать и добавлять его.Я не проверял правильность вашего кода.

...