二叉樹後續遍歷算法

二叉樹後續遍歷非遞歸算法:


void BT_PostOrderNoRec(pTreeT root) 
{ 
    stack<treeT *> s; 
    pTreeT pre=NULL; //pre指針是重點

    while ((NULL != root) || !s.empty()) 
    { 
       if (NULL != root) 
       { 
           s.push(root); 
           root = root->left; 
       } 
       else 
       { 
           root = s.top(); 
           if (root->right!=NULL && pre!=root->right)//這裏是使用pre指針的關鍵地方
           { 
               root=root->right; 
           } 
           else
           { 
               root=pre=s.top(); 
               visit(root); 
               s.pop(); 
               root=NULL; 
           } 
       } 
    } 

}



發佈了90 篇原創文章 · 獲贊 17 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章