该程序弹出堆栈的第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;
}
谢谢您的时间。