用指针打印二进制搜索树C++的奇怪方法



我正在听一个讲座,它展示了一些代码,可以像一样递归地打印出二进制搜索树

void printTree(node *t){
    if(t!=NULL){
        printTree(t->left);
        cout<<t->key<<endl;
        printTree(t->right);
     }
 }

我理解它在做什么,但我不明白其中的含义。该函数正在传递一个指向节点的指针,但在"cout"行中,它正在尝试访问节点结构中的键值,而不首先取消对它的引用。我的意思是,它不应该是类似的东西吗

cout<<(*t)->key<<endl;

相反?

实际上,->是一个解引用运算符。你可以选择:

cout<<t->key<<endl;cout<<(*t).key<<endl;

但绝对不是"(*t)->key"-如果不是崩溃的话,这将是一个双重deref,可能是一个编译错误。

相关内容

最新更新