中序遍歷【遞歸算法】和【非遞歸算法】


2019/11/19

二叉樹中序遍歷的非遞歸算法 

void InOrder(BiTree T){ if(T!=NULL){ InOrder(T->lchild);//遞歸遍歷左子樹
        visit(T);      //訪問根節點
        InOrder(T->rchild);//遞歸遍歷左子樹
 } }

二叉樹中序遍歷的非遞歸算法  

 1 void InOrder2(BitTree T){  2 //二叉樹中序遍歷的非遞歸算法,算法需要借助一個棧
 3     InitStack(S);                   //初始化棧
 4     BitTree p=T;                    //p是遍歷指針
 5     while( p || !IsEmpty(S) ){  6         if(p){                      //根指針進棧,遍歷左子樹。
 7             Push(S,p);              //每遇到非空二叉樹先向左走。
 8             p=p->lchild;  9  } 10         else{                       //根指針退棧,訪問根節點,遍歷右子樹。
11             Pop(S,p);               //退棧。
12             visit(p);               //訪問根節點。
13             p=p->rchild;            //再向右子樹走
14  } 15  } 16 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM