类型 struct 的返回类型上的“delete_node”的错误类型冲突

时间:2021-02-22 15:25:11

标签: c binary-search-tree

这是结构

typedef struct node{
    int data;
    struct node *left;
    struct node *right;
}node;
node* insert(node*, int);
node* delete_n(node* ,int);

delete_node 函数

node *delete_node(node* root,int k){
    if(root==NULL){
        printf("absent");
        return root;
    }
    if(k > root->data){
        root->right=delete_node(root->right,k);
    }else if(k < root->data){
        root->left=delete_node(root->left,k);
    }else{
        if(root->left==NULL){
            node* temp=root->right;
            free(root);
            printf("deleted");
            return temp;
        }else if(root->right == NULL){
            node* temp= root->left;
            free(root);
            printf("deleted");
            return temp;
        }else if(root->left!=NULL && root->right!=NULL){
            node* temp=root->left;
            while(temp && temp->right!=NULL){
                temp=temp->right;
            }
            root->data=temp->data;
            root->left=delete_node(root->left,temp->data);
        }
    }
    return root;
}

仅当我放置类型为 node* 的返回类型时,我才会收到类型冲突的错误,但是当我删除返回类型时,代码成功运行。

0 个答案:

没有答案