1,自己开始写的非递归中序遍历算法
InOrderTree(node* root)
{
node* ptmp = root;
while(ptmp)
{
if(ptmp->left)
{
s.push(ptmp);
ptmp = ptmp->left;
}
else if(ptmp->right)
{
printf(ptmp->data);
ptmp = ptmp->right;
}
else
{
printf(ptmp->data);
ptmp = s.pop();
printf(ptmp->data);
ptmp = ptmp->right
while(ptmp)
{
ptmp = s.pop();
printf(ptmp->data);
ptmp = ptmp->right;
}
}
}
}
2,http://blog.csdn.net/sgbfblog/article/details/7773103同学的代码,非常好。
InOrderTree(node* root)
{
node* ptmp = root;
while(ptmp!=NULL || !s.empty())
{
if(ptmp != NULL)
{
s.push(ptmp);
ptmp = ptmp->left;
}
else
{
ptmp = s.pop();
printf(ptmp->data);
ptmp = ptmp->right;
}
}
}