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会有什么问题?
答案 0 :(得分:1)
const是一个关键字,它向编译器指示您不打算写入变量并且只想从中读取它。就算法的逻辑而言,它不应该影响最终结果,也不应该影响它的正确性。它通常用于优化或内存保护。在这种特殊情况下,我怀疑是为了防止在BFS遍历期间修改节点。