解释下树的中序遍历函数各个语句干嘛用的

yimingxinshou 2012-08-02 03:52:42
Status InOrderTraverse(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; //尤其return ERROR作用具体点,执行return后接着执行哪一步
Push(S,p->rchild);
}
}
return OK;
}

不用管语法错误,程序我没运行,直接书上抄的,主要介绍下各个语句的作用,尤其return语句,拜托具体点。实在搞不懂它是怎么遍历的
...全文
253 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shijiashabi 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yimingxinshou 的回复:]

引用 7 楼 的回复:

C/C++ code
//二叉树中序遍历
Status InOrderTraverse(BiTree T,Status((* Visit))(TElemType e))
{
InitStack(S);//初始化栈
Push(S,T);//根指针进栈
while(!StackEmpty(S))//判断栈是否为空
{
while(GetTop(S,p………
[/Quote]函数开始的地方
ForestDB 2012-08-13
  • 打赏
  • 举报
回复
LZ还知道函数的返回么?
DyanWang 2012-08-13
  • 打赏
  • 举报
回复
return就表示程序执行结束,不管返回值具体是什么,就结束该程序或者函数
yimingxinshou 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

C/C++ code
//二叉树中序遍历
Status InOrderTraverse(BiTree T,Status((* Visit))(TElemType e))
{
InitStack(S);//初始化栈
Push(S,T);//根指针进栈
while(!StackEmpty(S))//判断栈是否为空
{
while(GetTop(S,p……
[/Quote]
if(!Visit(p->data))//对p指向的结点执行visit函数
return ERROR; //return后就不执行了,返回入口地址
返回入口地址是返回哪儿啊?
titer1 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

中序遍历是指左根右的遍历顺序
[/Quote]

精辟,

还有为什么不看看 严奶奶 的那个模拟软件呵呵。。
yimingxinshou 2012-08-11
  • 打赏
  • 举报
回复
谁来讲一下数的遍历过程啊,函数是怎么实现的?别光说些有的没的
shijiashabi 2012-08-11
  • 打赏
  • 举报
回复
先将根指针进栈,再向左走,一直走到头,此时栈顶为空指针,然后将空指针出栈,然后将最左一个节点出栈,再向右走一步,继续向左走到头,如此往复,直至栈空
shijiashabi 2012-08-11
  • 打赏
  • 举报
回复
//二叉树中序遍历
Status InOrderTraverse(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))//对p指向的结点执行visit函数
return ERROR; //return后就不执行了,返回入口地址
Push(S,p->rchild);//右孩子进栈 向右走
}
}
return OK;//调用结束返回
}
yimingxinshou 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
error 定义的是错误吧 一般不会执行到这步的
[/Quote]
教材上是这样写的
shijinpeng_2012 2012-08-02
  • 打赏
  • 举报
回复
error 定义的是错误吧 一般不会执行到这步的
赵4老师 2012-08-02
  • 打赏
  • 举报
回复
用堆栈模拟递归实现而已。
MC_LoveX 2012-08-02
  • 打赏
  • 举报
回复
中序遍历是指左根右的遍历顺序
MC_LoveX 2012-08-02
  • 打赏
  • 举报
回复
return之后函数就返回了 不执行了 不存在执行return后接着执行哪一步

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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