非递归的二叉树的遍历

jet8 2005-09-22 07:48:08
若在二叉链表的结点中增加一个双亲域以指示其双亲结点,则在遍历过程中能否不设栈?试以此存储结构编写不设栈进行中序遍历的递推形式的算法。一道题目个人练习,不是作业:)
...全文
208 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jp1984 2005-09-22
  • 打赏
  • 举报
回复
可以.
树的遍历分递归和非递归.非递归设栈模拟递归.但是栈空间不可省略.
进一步改进数据结构可得到非堆栈非递归遍历算法.这个过程称为线索二叉树.
http://www.stanford.edu/~blp/avl/
yun_5025 2005-09-22
  • 打赏
  • 举报
回复
Status Inorder_Nonrecursive(BiTree T)
{
BiTree p=T,s;

while(p)
{
s=p;
p=p->lchild;
if(!p)
{
p=s;
cout<<p->data<<"--";
while((p && !p->rchild) || (p && p->rchild && p->rchild==s))
{
s=p;
p=p->parent;
if(p && p->rchild!=s) cout<<p->data<<"--";
if(!p) return OK;
}
p=p->rchild;
}
}
return OK;
}

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧