二叉樹非遞迴遍歷

Andy Niu發表於2013-11-29

1、二叉樹遞迴遍歷很簡單,以前序遍歷為例說明:

1 void PrefixOrder(Node* node) 
2 {
3     if(node!=NULL)
4     {
5         cout<<root->value<<" ";
6         PrefixOrder(root->lchild);
7         PrefixOrder(root->rchild);
8     }
9 } 

  中序遍歷和後序遍歷類似。

2、考慮二叉樹非遞迴遍歷,思路:前序遍歷特點,訪問當前節點,然後訪問左孩子,左孩子有孩子,繼續訪問左孩子的左孩子節點,直到沒有左孩子,訪問右孩子。因此。非遞迴遍歷的思路就是,使用while,記錄當前節點,往左一條路走到底,然後原路後退,訪問右節點。

相關文章