C 为什么我没有得到最后的打印语句,无法得到树的高度?

C 为什么我没有得到最后的打印语句,无法得到树的高度?,c,binary-tree,binary-search-tree,C,Binary Tree,Binary Search Tree,为节点获取值后,程序终止。我不知道我做错了什么,请帮忙。我甚至不知道这些值是否被插入 struct Node { int data; struct Node* left; struct Node* right; }; struct Node* GetNode(int data){ struct Node* newnode = (struct Node*)malloc(sizeof(struct Node)); newnode->data=data;

为节点获取值后,程序终止。我不知道我做错了什么,请帮忙。我甚至不知道这些值是否被插入

struct Node  
{ 
  int data; 
  struct Node* left; 
  struct Node* right; 
};

struct Node* GetNode(int data){
    struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));
    newnode->data=data;
    newnode->left = NULL;
    newnode->right = NULL;
}

struct Node* insert(struct Node* root,int data){
    if(root=NULL){
        root = GetNode(data);
        return root;
    }
    else if(data <= root->data){
        root->left = insert(root->left,data);
    }
    else{
        root->right = insert(root->right,data);
    }
    return root;
}

int height(struct Node* root){
    if(root==NULL){
        return 0;
    }
    else{
        int lh = height(root->left);
        int rh = height(root->right);
        if(lh>rh){
            return (lh+1);
        }
        else{
            return (rh+1);
        }
    }
}  

int main() {
    
    struct Node* root =NULL;
    int n,i;
    printf("Enter the total number of nodes in the tree: ");
    scanf("%d",&n);
    int value[n];
    for(i=0;i<n;i++){
        printf("Enter the %d node ",i+1);
        scanf("%d",&value[i]);  
    }
    for(i=0;i<n;i++){
        root = insert(root,value[i]);
    }
    int high = height(root);
    printf("Height of the given tree is : %d ",high);
    
    return 0;
}
struct节点
{ 
int数据;
结构节点*左;
结构节点*右;
};
结构节点*GetNode(整型数据){
结构节点*新节点=(结构节点*)malloc(sizeof(结构节点));
新建节点->数据=数据;
newnode->left=NULL;
newnode->right=NULL;
}
结构节点*插入(结构节点*根,int数据){
if(root=NULL){
root=GetNode(数据);
返回根;
}
else if(数据){
根->左=插入(根->左,数据);
}
否则{
根->右=插入(根->右,数据);
}
返回根;
}
整数高度(结构节点*根){
if(root==NULL){
返回0;
}
否则{
int lh=高度(根部->左侧);
int rh=高度(根部->右侧);
如果(左侧>右侧){
返回(左侧+1);
}
否则{
返回(rh+1);
}
}
}  
int main(){
结构节点*root=NULL;
int n,i;
printf(“输入树中的节点总数:”);
scanf(“%d”和“&n”);
整数值[n];

对于(i=0;i,代码中有两个问题

  • 在函数
    struct Node*GetNode(int data)
    中,您没有返回
    newnode
  • 在函数
    struct Node*insert(struct Node*root,int data)
    中,在if条件
    if(root=NULL)
    中,应使用
    =
  • 以下是更正后的工作代码:

    struct Node  
    { 
      int data; 
      struct Node* left; 
      struct Node* right; 
    };
    
    struct Node* GetNode(int data){
        struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));
        newnode->data=data;
        newnode->left = NULL;
        newnode->right = NULL;
        return newnode;
    }
    
    struct Node* insert(struct Node* root,int data){
        if(root==NULL){
            root = GetNode(data);
            return root;
        }
        else if(data <= root->data){
            root->left = insert(root->left,data);
        }
        else{
            root->right = insert(root->right,data);
        }
        return root;
    }
    
    int height(struct Node* root){
        if(root==NULL){
            return 0;
        }
        else{
            int lh = height(root->left);
            int rh = height(root->right);
            if(lh>rh){
                return (lh+1);
            }
            else{
                return (rh+1);
            }
        }
    }  
    
    int main() {
        struct Node* root =NULL;
        int n,i;
        printf("Enter the total number of nodes in the tree: ");
        scanf("%d",&n);
        int value[n];
        for(i=0;i<n;i++){
            printf("Enter the %d node ",i+1);
            scanf("%d",&value[i]);  
        }
        for(i=0;i<n;i++){
            root = insert(root, value[i]);
        }
        int high = height(root);
        printf("Height of the given tree is : %d ",high);
        
        return 0;
    }
    
    struct节点
    { 
    int数据;
    结构节点*左;
    结构节点*右;
    };
    结构节点*GetNode(整型数据){
    结构节点*新节点=(结构节点*)malloc(sizeof(结构节点));
    新建节点->数据=数据;
    newnode->left=NULL;
    newnode->right=NULL;
    返回newnode;
    }
    结构节点*插入(结构节点*根,int数据){
    if(root==NULL){
    root=GetNode(数据);
    返回根;
    }
    else if(数据){
    根->左=插入(根->左,数据);
    }
    否则{
    根->右=插入(根->右,数据);
    }
    返回根;
    }
    整数高度(结构节点*根){
    if(root==NULL){
    返回0;
    }
    否则{
    int lh=高度(根部->左侧);
    int rh=高度(根部->右侧);
    如果(左侧>右侧){
    返回(左侧+1);
    }
    否则{
    返回(rh+1);
    }
    }
    }  
    int main(){
    结构节点*root=NULL;
    int n,i;
    printf(“输入树中的节点总数:”);
    scanf(“%d”和“&n”);
    整数值[n];
    
    对于(i=0;i)您没有检查insert中的漏洞的返回值。添加代码。只是编辑并添加了整个代码。请检查谢谢