正在取消引用指向二进制树中节点的指针


    #include <bits/stdc++.h>
using namespace std;
struct Node  
{
  int key;
  struct Node *left;
  struct Node *right;
  Node(int k){
      key=k;
      left=right=NULL;
  }
};

int main() {
Node *root=new Node(1);
root->left=new Node(2);
root->right=new Node(3);
cout<<*root<<endl;
}

为什么此代码会引发错误?我试图通过执行*root来取消引用根节点,但它不起作用。*根表示什么?

必须重载struct:的ostream运算符

std::ostream& operator<<(std::ostream& os, const Node& node)
{
    if (os.good())
    {
        os << node.key << std::endl;
        // print pointer here if needed
        // ...
    }
}

或者只写:

cout << root->key << endl;

CCD_ 1只是取消引用指针,并且是类型CCD_。在C++中,您必须指定如何打印复杂的数据结构,这与python等其他语言不同。这就是为什么你不能写cout << *root << endl;

比较复杂的数据结构也是如此。因此,您必须重载===-运算符。

bool operator==(Node *lnode, Node *rnode)
{
    return lnode->key == rnode->key;
}

相关内容

  • 没有找到相关文章

最新更新