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

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


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

5 个解决方案

#1


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

#2


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

#3


出栈,获取栈顶元素

#4


该子树已遍历完,当然要退栈遍历其他子树。知道所有的子树都遍历完了,就是栈为空的时候

#5


引用 1 楼 *mill 的回复:
就是从栈顶拿出来一个元素,赋值给p
也叫出栈


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

谢谢 ,懂了

#1


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

#2


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

#3


出栈,获取栈顶元素

#4


该子树已遍历完,当然要退栈遍历其他子树。知道所有的子树都遍历完了,就是栈为空的时候

#5


引用 1 楼 *mill 的回复:
就是从栈顶拿出来一个元素,赋值给p
也叫出栈


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

谢谢 ,懂了