| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1380 人关注过本帖
标题:中序遍历二叉树的非递归算法
只看楼主 加入收藏
zhu471712418
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-9-18
收藏
 问题点数:0 回复次数:15 
中序遍历二叉树的非递归算法



本人这几天在看 数据结构(耿国华写的) 有一处不懂 请教高手指点

这道题(在书中P166处)讲的是
中序遍历二叉树的非递归算法(调用栈操作的函数)”

typedef struct node
{
DataType data;
struct node * LChild;
struct node * RChild;
}BiTNode,*BiTree;

void InOrde(BiTree root)
{
InitStack(&s);
p=root;
while(p!=NULL||!IsEmpty(s))
{
if(p!=NULL)
{
Push(&s,p);
p=p->LChild;
}
else
{
Pop(&s,&p);
visit(p->data);
p=p->RChild;
}
}
}

else这个语句块的功能具体是实现什么???


搜索更多相关主题的帖子: 二叉树 遍历 递归 算法 
2007-09-23 21:30
zhu471712418
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-9-18
收藏
得分:0 

有没有帮我解决 一下啊

2007-09-23 21:58
zhu471712418
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-9-18
收藏
得分:0 

急需高手指点


2007-09-23 21:59
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
就是根节点的指针为空(p==NULL),说明左子树遍历完了 开始遍历右子树啊
2007-09-23 22:10
zhu471712418
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-9-18
收藏
得分:0 

但是 Pop(&s,&p) 已经把接点的弹出栈了 那么 p=p->RChild 语句就无法实现了
怎么能够再去遍历右子树能??

2007-09-23 22:40
zhu471712418
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-9-18
收藏
得分:0 
真是太失望了
2007-09-23 23:18
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
指向左右子树的指针都放在根结点里面啊,所有要遍历右子树就要先弹出根结点的啊,也就是取出根结点的值啊,
根节点的右指针就是指向右子树 也就是 p->RChild
2007-09-23 23:27
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
这里Pop(&s,&p) 显然是把栈顶的值赋给指针p的,而不是把它丢弃
2007-09-23 23:30
zhu471712418
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-9-18
收藏
得分:0 

是不是 把P的节点先弹出来啊 然后P取的节点的值 才能够指向右子树

2007-09-24 12:27
电脑爱好者
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-6
收藏
得分:0 

多写点代码。。

那么多函数,你都把代码搞出来。。。再分析比较方便

2007-09-24 12:41
快速回复:中序遍历二叉树的非递归算法
数据加载中...
 
   



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

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