zoukankan      html  css  js  c++  java
  • 数据结构_二叉树后序遍历

    /*
    后序遍历二叉树
    思路:
    1,若当前结点没有左右孩子,则访问并出栈
    2,若当前结点有左孩子或右孩子,并且孩子被访问过,则访问并出栈(若当前结点有左右孩子,只要有一个孩子已被访问,那么它的两个孩子都已被访问,这与入栈顺序有关,它的孩子在栈中一定在它的上方)
    3,若当前结点有左孩子或右孩子,并且都没有被访问,那么先将右孩子入栈,再将左孩子入栈
    */
    
    void beh_Order(BiTree T)
    {
        InitStack(S); 
        BiTree pCur,pPre=NULL,p;
        Push(s,T);
        while(!IsEmpty(S)){
            pCur = getTop(stack);
            if((pCur->lchild==NULL && pCur->rchild==NULL) ||   
                (pPre!=NULL && (pCur->lchild==pPre || pCur->rchild==pPre)))  
            {    
                visit(pCur);  
                Pop(stack,p);  
                pPre = pCur;  
            }  
            else  
            {    
                if(pCur->rchild != NULL)  
                    Push(stack,pCur->rchild);  
                if(pCur->lchild != NULL)  
                    Push(stack,pCur->lchild);  
            }  
        }
    }
  • 相关阅读:
    二级JAVA考证笔记
    JAVA异常处理机制
    notepad++安装nppFTP
    nginx conf_ctx ****
    ngx_string()错误分析
    nginx
    char *p[] 和char**的思考
    LeetCode.接雨水
    LeetCode.atoi
    LeetCode.数字转罗马数字
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/7491558.html
Copyright © 2011-2022 走看看