【发布时间】:2021-05-14 12:26:22
【问题描述】:
关于如何在 void po() 函数中将二叉树转换为双向链表树的问题,我们将根节点和 2 个节点作为它们的地址传递,现在我想设置其中一个引用的右侧节点我正在执行以下方式并出现错误任何人都知道如何解决这个问题???
void po(Node* root,Node **p,Node**q){
if(p==NULL)
return;
po(root->left,p,q);
if(*p==NULL){
*p=root;
*q=root;
}
else{
*(q)->right=root; // This line contain error !!!
root->left=*q;
*q=root;
}
po(root->right,p,q);
}
Node * bToDLL(Node *root)
{
if(root==NULL )
return root;
Node* a=NULL;
Node* b=NULL;
po(root,&a,&b);
return a;
}
错误:- 错误:请求 * q 中的成员权限,它是指针类型 Node* (也许您打算使用 -> ?) *(q)->右=根; ^
【问题讨论】:
-
错误信息有什么不清楚的地方?
-
无法访问它的右指针
-
你可能想要
(*q)->right。 -
是的 Yksisarvinen 但是当我使用它时它显示错误
-
正确的版本是
(*q)->right。你的版本(错误的)是*(q)->right,就像你写的*(q->right)一样(再次,错误)。
标签: c++ struct tree doubly-linked-list double-pointer