| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 854 人关注过本帖
标题:二叉树非递归遍历算法
只看楼主 加入收藏
朔州小子
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2011-9-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
二叉树非递归遍历算法
Status InOrderTracerse(BiTree T,Status (* Visit)(TElemType e)//中序二叉树非递归遍历
{
 InitStack(S); Push(S,T);
 while(!StackEmpty(s))
 {while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到尽头
  Pop(S,p);                              //空指针退栈
  if(!StackEmpty(S))                    //访问结点,向右一步
   {Pop(S,p);
    if(!Visit(p->data)) return ERROR;
    Push(S,p->rchild);
    }//if
  }//while
 return OK;
}//InOrderTraverse
算法中 if(!StackEmpty(S))有啥作用?为啥不省略?
搜索更多相关主题的帖子: return 二叉树 
2013-07-11 15:05
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:7 
不是有注释吗?接点要的右子接点也要遍历的,非空则保存一下右接点。。


我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-07-11 23:05
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:7 
用自建栈代替程序栈,本质上和递归没什么区别。

你可以尝试给结点增加一个指向父结点的指针,这才是真正摆脱了栈的遍历。

另外建议学学线索二叉树。

重剑无锋,大巧不工
2013-07-14 20:37
bo630540132
Rank: 2
等 级:论坛游民
帖 子:4
专家分:11
注 册:2013-7-6
收藏
得分:7 
沒看明白呢...什么時候才可以看懂這段文字哦...
2013-07-15 17:41
快速回复:二叉树非递归遍历算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015879 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved