C语言数据结构之二叉树的非递归后序遍历算法
前言:
前序、中序、后序的非递归遍历中,要数后序最为麻烦,如果只在栈中保留指向结点的指针,那是不够的,必须有一些额外的信息存放在栈中。
方法有很多,这里只举一种,先定义栈结点的数据结构
typedef struct{Node * p; int rvisited;}SNode //Node 是二叉树的结点结构,rvisited==1代表p所指向的结点的右结点已被访问过。
lastOrderTraverse(BiTree bt){
//首先,从根节点开始,往左下方走,一直走到头,将路径上的每一个结点入栈。
p = bt;
while(b