后序遍历的非递归算法

作者在 2016-05-03 09:40:30 发布以下内容
void PosOrder(BT *bt)
{
	int i = 0, a[MaxSize];
	BT *s[MaxSize], *p;
	while (p != NULL || i != 0)
	{
		while (p != NULL)
		{
			s[++i] = p;
			a[i] = 0;
			p = p->Lchild;
		}
		if (i > 0)
		{
			if (a[i] == 0)
			{
				p = s[i];
				if (i > 0)
				{
					p = p->Rchild;
					a[i] = 1;
				}
			}
			else
			{
				p = s[i--];
				printf("%d", p->data);
				p = NULL;
			}
		}
	}
}
数据结构与算法 | 阅读 10154 次
文章评论,共0条
游客请输入验证码
浏览21750次
最新评论