我有以下問題二叉樹:原始指針,棧和隊列
....
template class BinaryTree { private: template struct Node { T value; Node* left; Node* right; }; private: Node* root;
std::stack<Node<T>const *> stack;
stack.push(root);
while(false == stack.empty())
{
Node<T>* node = stack.pop();
this->visited(node->value);
後,當我試圖執行廣度優先搜索: 模板 類二叉樹 { 私有: 模板 結構節點 { T值; Node * left; 節點*權利; }; private: Node * root;
std::stack<Node<T>const *> stack;
stack.push(root);
while(false == stack.empty())
{
Node<T>* node = stack.pop();
this->visited(node->value);
我收到一個錯誤:
錯誤4錯誤C2440:初始化:不能從 '無效' 轉換爲「二叉樹::節點* C:\用戶\斯蒂芬\文檔\ Visual工作室2012 \項目\圖\二叉樹\ binarytree.cpp 152 1二叉樹
的問題是,我想實現DFS和BFS。所以我需要使用 std :: stack const *> stack; 我曾嘗試使用流行,仍然無法正常工作。 –
celeborn
在C++ 11中,按值返回會非常有效。我並不是說'pop'應該改變,但是他們可以添加一個新的'toppop'方法,該方法通過值返回並利用移動語義來有效地執行。 –
非常感謝。歡呼聲,它現在正在工作。 – celeborn