2017-06-03 153 views
-1
void traverse(Node* root) 
{ 
    queue<Node*> q; 
    if (root) 
     q.push(root); 
    while (!q.empty()) 
    { 
     const Node * const temp_node = q.front(); 
     q.pop(); 
     cout<<temp_node->value<<"\n"; 

     if (temp_node->left) { 
      q.push(temp_node->left); 
     } 
     if (temp_node->right) { 
      q.push(temp_node->right); 
     } 
    } 
} 

在BFS(水平順序遍歷)中爲什麼會有const Node *的使用? const在這裏有什麼用處,以及沒有const的問題會是什麼?樹中的BFS(水平順序遍歷)

+0

您的問題標題與您真正的問題不一致。 –

回答

1

const是一個關鍵字,它向編譯器表明你不打算寫入一個變量,只想從中讀取它。就算法的邏輯而言,它不應該影響最終結果或者它的正確性。它通常用於優化或內存保護。在這種特殊情況下,我懷疑這是爲了防止在BFS遍歷期間修改節點。

+0

實際上'Node *'的所有實例都可以用'const Node * – ithenoob