这个代码在哪里出现了非法内存访问的问题
#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## 在这段代码中,出现了非法内存访问的问题。具体是在函数`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]