你的Node &node是Node变量的引用,不需要if(node!=NULL),戚兆这种NULL判断一般用于指针判断。
printInOrder(node.lchild);
这里,你node.lchild应该是一个指针,你的printInOrder要求传值,你需要解引用,即:
printInOrder(*(node.lchild));
若是传入Node *node的话,才需要判断node!=NULL,而传高颂租指针的樱态话,除非你里面要修改指针指向,否则也不需要Node *&node(该用法,可以修改指针指向,相当于Node **node)。
void printInOrder(Node& node){
//if(node!=NULL){ //没有清行答必要判断对象是否为空,若主调函数中未初始化node,会报错
printInOrder(node.lchild);
// 不能将参数 1 从“Node *”转换为“Node &” 那这里要怎样写才是正确的传参方式呢?
//Node* 和Node&不是一码事带腊,前一个是指针,后答慧一个是引用,也就是别名
cout << node.data << endl;
printInOrder(node.rchild);
}
}