叠加弹出第0个元素

时间:2019-05-11 04:51:02

标签: c++ stack binary-tree pop

该程序弹出堆栈的第0个元素。我正在使用堆栈进行二叉树的有序遍历。我还试图找出二进制搜索树的单父节点。

这是我的弹出方法:

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

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

这是我的顺序遍历算法:

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:最后一个是我输入的最后一个节点,其中包含信息40,然后在我插入4、9、12、1、8时为单亲父母打印1。 ,然后是40。

但是,它转到pop:1 40,然后弹出:01601268261。我确定它现在进入了错误的区域。

我的代码也适合检查单亲父母吗?

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

谢谢您的时间。

0 个答案:

没有答案