void BT_InOrderNoRec(pTreeT root){ stack<treeT *> s; while ((NULL != root) || !s.empty()) { if (NULL != root) { s.push(root); root = root->left; } else { root = s.top(); visit(root); s.pop(); root = root->right; } }}自己實現(xiàn)代碼(比較粗糙):
順序訪問每個節(jié)點,然后將右節(jié)點插入棧中。然后將當(dāng)前節(jié)點變換為左節(jié)點。知道當(dāng)前節(jié)點為空,才會作出棧操作。偽代碼如下: void BT_PreOrderNoRec(pTreeT root){ stack<treeT *> s; while ((NULL != root) || !s.empty()) { if (NULL != root) { visit(root); s.push(root); root = root->left; } else { root = s.top(); s.pop(); root = root->right; } }}自己實現(xiàn)的代碼:
posted on 2011-04-10 10:42 kahn 閱讀(311) 評論(0) 編輯 收藏 引用 所屬分類: 算法相關(guān)
Powered by: C++博客 Copyright © kahn