后序遍历非递归算法

时间:2020-10-21 15:06:45 笔试题目 我要投稿

后序遍历非递归算法

后序遍历非递归算法

#define maxsize 100
typedef enum{L,R} tagtype;
typedef struct
{
    Bitree ptr;
    tagtype tag;
}stacknode;

typedef struct
{
    stacknode Elem[maxsize];
    int top;
}SqStack;


//后序遍历
void PostOrderUnrec(Bitree t)
{
    SqStack s;
    stacknode x;
    StackInit(s);
    p=t;
  
    do
    {
        while (p!=null)       //遍历左子树
        {
            x.ptr = p;
            x.tag = L;        //标记为左子树
            push(s,x);
            p=p->lchild;
        }
   
        while (!StackEmpty(s) &&s.Elem[s.top].tag==R) 
        {
            x = pop(s);
            p = x.ptr;
            visite(p->data);   //tag为R,表示右子树访问完毕,故访问根结点      
        }
       
        if (!StackEmpty(s))
        {
            s.Elem[s.top].tag =R;    //遍历右子树
           p=s.Elem[s.top].ptr->rchild;       
        }   
    }while (!StackEmpty(s));
}//PostOrderUnrec

 

【后序遍历非递归算法】相关文章:

Java认证辅导:Java实现二叉树遍历算法10-03

递归计算如下递归函数的值11-22

递归实现回文判断11-24

浅析jQuery 遍历函数javascript11-10

jQuery遍历Form示例代码11-11

php递归函数相关知识分享11-16

jQuery中常用的遍历函数用法实例11-10

Query选择HTML遍历函数的技巧解析11-12

Jquery一个遍历Table表头的举例11-11

算法导论学习总结01-06