Стеки Попс 0-й элемент - PullRequest
0 голосов
/ 11 мая 2019

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

Это мой метод pop:

  void pop()
    {
        if (!isEmptyStack())
            stackTop--;
        else
            cout << "Cannot remove from an empty stack." << endl;

        cout << "pop: " << stackTop << endl;
    }

Это мой алгоритм обхода inorder:

template <class elemType>
void binaryTreeType<elemType> :: nonRecursiveInTraversal()
{
    stackType<nodeType<elemType>*> stack;
    nodeType<elemType> *current;
    current = root;

    while ((current != nullptr) || (!stack.isEmptyStack())){



        if (current != nullptr)
        {
            stack.push(current);

            if( (current->rLink == nullptr && current->lLink != nullptr) || (current->rLink != nullptr  && current->lLink == nullptr) ){
                singleParentCount += 1;
            }
            current = current->lLink;

        }
        else
        {

            current = stack.top();
            stack.pop();
            cout << current->info << " ";
            current = current->rLink;


        }
        cout << endl;

    }

}

Я ожидал, что он напечатает pop: 1, наконец, споследний введенный мной узел, в котором есть информация 40, а затем выводит 1 для родителей-одиночек, когда я вставляю 4, 9, 12, 1, 8, а затем 40.

Тем не менее, он идет в поп: 1 40, а затем pop: 0 1601268261. Я уверен, что в этот момент он попал не в ту область.

Также мой код подходит для проверки одиноких родителей?

if( (current->rLink == nullptr && current->lLink != nullptr) || (current->rLink != nullptr  && current->lLink == nullptr) )
           {
                singleParentCount += 1;
            }

Спасибо за ваше время.

...