二叉树,退栈到P是什么意思?

C语言 码拜 10年前 (2015-05-11) 1283次浏览 0个评论

2  非递归算法
设T是指向二叉树根结点的指针变量,非递归算法是:
二叉树为空,则返回;否则,令p=T;
⑴ 访问p所指向的结点;
⑵ q=p->Rchild ,若q不为空,则q进栈;
⑶ p=p->Lchild ,若p不为空,转(1),否则转(4);
⑷  退栈到p ,转(1),直到栈空为止。

第(4)退栈到P是什么意思???

就是从栈顶拿出来一个元素,赋值给p
也叫出栈
40分
比如,一个二叉树只有两个结点,根结点和他的Rchild。那么
第2步把T->Rchild进栈
第3步的p=p->Lchild之后,p为空,转(4),
第4步,栈里只有一个结点,就是第一步的T->Rchild,把它赋值给p,然后栈就空了。
出栈,获取栈顶元素
该子树已遍历完,当然要退栈遍历其他子树。知道所有的子树都遍历完了,就是栈为空的时候
引用 1 楼 brookmill 的回复:

就是从栈顶拿出来一个元素,赋值给p
也叫出栈

引用 2 楼 brookmill 的回复:

比如,一个二叉树只有两个结点,根结点和他的Rchild。那么
第2步把T->Rchild进栈
第3步的p=p->Lchild之后,p为空,转(4),
第4步,栈里只有一个结点,就是第一步的T->Rchild,把它赋值给p,然后栈就空了。

谢谢 ,懂了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明二叉树,退栈到P是什么意思?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!