using namespace std;
class tree {
public:
char val;
tree* lchild;
tree* rchild;
void creatTree(tree* T)
{
char ch;
ch = getchar();
if (ch == '#')
{
T = NULL;
}
else
{
T = new tree;
T->val = ch;
creatTree(T->lchild);
creatTree(T->rchild);
}
}
void VLR(tree* T)
{
if (T == NULL)
{
return;
}
else {
cout << T->val;
VLR(T->lchild);
VLR(T->rchild);
}
}
};
int main()
{
tree t;
tree* T;
t.creatTree(T);
t.VLR(T);
}
严重性 代码 说明 项目 文件 行 禁止显示状态
警告 C6001 使用未初始化的内存“T”。 10.22二叉树学习 C:\Users\楚和周扬\source\repos\10.22二叉树学习\10.22二叉树学习.cpp 47
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4700 使用了未初始化的局部变量“T” 10.22二叉树学习 C:\Users\楚和周扬\source\repos\10.22二叉树学习\10.22二叉树学习.cpp 47
在 void creatTree(tree* T)
{
char ch;
ch = getchar();
if (ch == '#')
{
T = NULL;
}
else
{
T = new tree;
T->val = ch;
creatTree(T->lchild);
creatTree(T->rchild);
}
}这一段代码中void creatTree(tree* T)加上&变成void creatTree(tree* &T)就可以运行了,这是为什么呢?