【发布时间】:2021-03-20 06:50:18
【问题描述】:
我正在实现二叉树的前序遍历(无递归)。以下代码运行到无限循环。我无法理解发生了什么
void Tree::n_preorder()
{
Node* temp;
stack s;
cout<<"\nPreorder: ";
while(1)
{
s.push(root);
while(1)
{
temp = s.pop();
cout<<temp->data;
if(temp->right)
{
s.push(temp->right); //Push right child
}
if(s.isEmpty())
{
break;
}
if(temp->left)
{
s.push(temp->left); //Push left child
}
}
}
}
栈的isEmpty()函数
int isEmpty()
{
return top==-1;
}
【问题讨论】:
-
删除第一个 while 循环。
标签: c++ data-structures tree