我正在查看二进制搜索树的广度优先排序算法,并且使用了一个我无法理解的符号。有趣的是,Google的结果为零。
// levelorder()
// q = empty queue
// q.enqueue(root)
// while not q.empty do
// node := q.dequeue() //Referring to this
// visit(node)
// if node.left != null then
// q.enqueue(node.left)
// if node.right != null then
// q.enqueue(node.right)
这里使用的操作是什么?我对这条线很困惑。
答案 0 :(得分:1)
:=
是伪代码分配。
或ADA。但无论如何,这有点像伪代码。
答案 1 :(得分:1)
您发布的代码是伪代码,并不是有效的C ++。
在C ++中,赋值运算符为=
。
在其他语言中,如Ada,BCPL,Cecil,Dylan,E,Eiffel,Maple,Mathematica,Modula-3,Pascal,Pliant,Sather,Simula,Smalltalk,SML,赋值运算符为:=
。
GNU make也使用:=
作为分配方式。
由于您发布的代码是注释,因此它不是有效的C ++。
以下是您在有效C ++中发布的代码的更近代表:
#include <iostream>
#include <string>
#include <queue>
//A node might look like this:
struct Node{
Node* left;
Node* right;
};
//somewhere you have a node and a root
Node* node = new Node;
Node* root = new Node;
//a visit function is called in the pseudo code you posted
void visit(Node* node){
// ... code ...
return;
}
//here is what valid C++ that is similar to the pseudo code:
void levelorder(){
//empty queue
std::queue<Node*> q;
//add the root to the queue
q.push(root);
do {
visit(node);
if (node->left != nullptr){
q.push(node->left);
}
if (node->left != nullptr){
q.push(node->right);
}
}while(!q.empty());
return;
}
//I just added this main function so the whole code snippet compiles successfully
int main(){}
答案 2 :(得分:0)
它在评论中(每个//
前缀)...它不是可编译的代码,在C ++中没有任何意义。
答案 3 :(得分:0)
它不是C ++运算符。它在某些语言中使用,例如Pascal,与=
赋值的含义相同。