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,記錄當前節點,往左一條路走到底,然後原路後退,訪問右節點。