废话不多说,本人用的VS2017,
创建树的函数只这样的:
void CreateBTree(BTNode * & b, char * str)
{
BTNode * St[50], * p = NULL;
int top = -1,k, j = 0;
char ch;
b = NULL;
ch = str[j];
while (ch != '\0;')
{
switch (ch)
{
case '(':top++;St[top] = p;k = 1;break;
case ')':top--;break;
case ',':k = 2;break;
default:p = (BTNode *)malloc(sizeof(BTNode));
p->data = ch;
p->lchild = p->rchild = NULL;
if (b == NULL)
b = p;
else
{
switch (k)
{
case 1:St[top]->lchild = p;break;
case 2:St[top]->rchild = p;break;
}
}
}
j++;
ch = str[j];
}
}
主函数是这样的
#include<iostream>
using namespace std;
int main()
{
BTNode * b;
cout << "2";
CreateBTree(b, "A(B(D(,G)),C(E,F))" );
cout << "2";
PostOrder(b);
cout << "1";
return 1;
}
在主函数的CreateBTRree(b,"A(B(D(,G)),C(E,F))")处报错,内容是这样的:
“const char ”类型的实参与“char ”类型的形参不兼容
小纠结:
为什么我的出错了, 我同学的2010版的没问题!!! \(.O_O.)|||
emmmmm
你把 char * str
换成string str
试试
好吧,至今不知道是什么原因,我把同学的代码靠过来,再按我的逻辑排了一遍,在vs里,运行成功了。另外,vscode运行再运行这个,失败,好像第一次运行同学的代码成功了,但是我的修改只是把部分内容写到了头文件里,可能是头文件引用的地方出问题了。找到原因再更新吧。
– Foxer 5年前