1215787625 发表于 2024-5-8 15:57:17

这个代码在哪里出现了非法内存访问的问题

#include<bits/stdc++.h>
using namespace std;
typedef struct Node{
        int deep;
        char c;
        Node* left;
        Node* right;
}*TreeNode,treenode;

TreeNode creattree(TreeNode t,int depth){
        char ch;
        cin>>ch;
        //cout<<"ch="<<ch<<endl;
        if(ch=='#'){
                t = NULL;
        }
        else{
                t = new treenode;
                t->c = ch;
                t->deep = depth;
                //cout<<t->c<<endl;
                t->left=NULL;
                t->right=NULL;
                t->left=creattree(t->left,depth+1);
                t->right =creattree(t->right,depth+1);
        //        cout<<"创建成功"<<endl;
               
        }
        return t;
}

void prosee(TreeNode t){
        if(t==NULL){
                //cout<<"over"<<endl;
                return;
        }
        else{
        //        cout<<t->c<<" depth="<<t->deep<<endl;
                //system("pause");
                prosee(t->left);
                prosee(t->right);
        }
}

void mindepth(TreeNode t,int i[],int& c){
        if(t->left==NULL&&t->right==NULL){
                i=t->deep;
                c++;
                return;
        }
        else{
                mindepth(t->left,i,c);
                mindepth(t->right,i,c);
        }
}

int main(){
        TreeNode t;
        t = NULL;
        int depth=1,m=0,n=0,i={0},min=1000;
        t=creattree(t,depth);//用void可以吗?明明是指针
       
        //prosee(t);
        mindepth(t,i,n);
        for(m=0;m<n;m++){
                if(min>=i&&i>0){
                        min = i;
                }
        }
        cout<<min;
        free(t);
        return 0;
}
//ab##cd##e##

FishC 发表于 2024-5-8 15:57:33

在这段代码中,出现了非法内存访问的问题。具体是在函数`creattree`中,当输入完`ch`后,应该将其赋值给`t->c`,而不是直接打印输出。正确的代码如下所示:

TreeNode creattree(TreeNode t, int depth){
    char ch;
    cin >> ch;
    t->c = ch;// 将输入的字符赋值给t的c成员
    // 其他代码
}

另外,在包含头文件的部分,应该是 `#include <iostream>`,而不仅仅是 `#include`。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 这个代码在哪里出现了非法内存访问的问题