我正在尝试使用下面的函数使用二叉树创建一个循环的双向链表,但是在代码下方给出了它的抛出编译错误。
/*Node is as follows:
struct Node
{
int data;
struct Node* left;
struct Node* right;
Node(int x){
data = x;
left = right = NULL;
}
};*/
Node *bTreeToCList(Node *root)
{
if(!root) return NULL;
stack<Node *> s;
s.push(root);
Node *temp=NULL, *cdll=NULL, *head=NULL;
while(!s.empty()){
while(temp){
s.push(temp->left);
temp = temp->left;
}
temp = s.top(); s.pop();
int data = temp->data;
temp = temp->right;
if(!head){
head = cdll = new Node(data)
}
else{
cdll->right = new Node(data)
}
}
cdll->right = head;
head->left = cdll;
return head;
}
编译错误:
编译错误prog.cpp:在功能'Node * bTreeToCList(Node *)'中:prog.cpp:164:40:错误:没有匹配的函数可以调用‘Node :: Node(int&)’头= CDLL =新节点(数据)^ prog.cpp:6:8:注意:候选者:Node :: Node()结构节点^ prog.cpp:6:8:注意:候选人期望0个参数,提供1个prog.cpp:6:8:注意:候选人:constexpr Node :: Node(constNode&)prog.cpp:6:8:注意:来自的参数1没有已知的转换从“ int”到“ const Node&” prog.cpp:6:8:注意:候选人:constexprNode :: Node(Node &&)prog.cpp:6:8:注意:没有已知的转换参数1从“ int”到“ Node &&” prog.cpp:167:40:错误:不匹配调用“ Node :: Node(int&)”的函数cdll-> right =新节点(数据)^ prog.cpp:6:8:注意:候选对象:Node :: Node()结构节点^ prog.cpp:6:8:注意:候选人期望0个参数,提供1个prog.cpp:6:8:注意:候选人:constexpr节点::否.................
我已经在我的网站上发布了解决方案,请查看https://finaldesk.co.in/blog/