首页 > 解决方案 > 二叉树到循环双向链表

问题描述

我正在尝试使用以下函数使用二叉树创建一个循环双向链表,但它会抛出编译错误,在代码下方给出。

/*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&)' head = cdll = new Node(数据)^ prog.cpp:6:8:注意:候选人:Node::Node() 结构节点 ^ prog.cpp:6:8:注意:候选人需要 0 个参数,提供 1 个 prog.cpp:6:8:注意:候选人:constexpr Node::Node(const Node&) prog.cpp:6:8:注意:没有已知的参数 1 从“int”到“const Node&”的转换 prog.cpp:6:8:注意:候选人:constexpr Node::Node(Node&&) prog.cpp:6:8: 注意:没有已知的参数 1 从 'int' 到 'Node&&' 的转换 prog.cpp:167:40: 错误:没有匹配函数调用 'Node: :Node(int&)' cdll->right = new Node(data) ^ prog.cpp:6:8: note: Candidate: Node::Node() struct Node ^ prog.cpp:6:8: note: Candidate期望 0 个参数,1 个提供 prog.cpp: 6:8:注意:候选:constexpr Node::No.......

标签: c++data-structureslinked-listdoubly-linked-list

解决方案


推荐阅读