数据结构二叉搜索树问题

C语言 码拜 9年前 (2016-04-13) 939次浏览
本人想做到,先创建一个二叉搜索树,然后以右根左的顺序遍历这个二叉搜索树,并且把这个结果放在顺序表里。大家帮看一下,刚开始学者,十分感谢!
void p(BinTree t, Stu e)//遍历创建好的二叉搜索树,二叉搜索树结构体包括Stu 定义的Data,Left,Right
{
int i = 0;
if (t)
{
p(t->Right, e);//先访问右子树
e.score = t->Data.score;//把当前节点的内容赋给e,Stu 是一个结构体,包括学生学号、姓名、成绩
//s->con[i].score = e.score;
//i++;
strcpy(e.name, t->Data.name);
strcpy(e.num, t->Data.num);
p(t->Left, e);
}
}
CreateList();//初始化顺序表
p(T, e);//调用遍历的函数
for (j = 0; j < n; j++){
P.con[j].score = e.score;//这里出现错误!
strcpy(P.con[j].name, e.name);
strcpy(P.con[j].num, e.num);
}
解决方案

50

你这样贴了一段别人很难看出错误。
P.con[j].score = e.score;出错的话,你本人检查一下P有没有分配空间,它的成员变量con有没有分配空间,j是不是太大越界了
代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

26

可以去本人的博客看看二叉搜索树的类的建立和遍历

12

CreateList();//初始化顺序表
void p(BinTree t)//遍历创建好的二叉搜索树,二叉搜索树结构体包括Stu 定义的Data,Left,Right
{
//int i = 0;
static j=0;
if (t)
{
p(t->Right,);//先访问右子树
//e.score = t->Data.score;//把当前节点的内容赋给e,Stu 是一个结构体,包括学生学号、姓名、成绩
//s->con[i].score = e.score;
//i++;
P.con[j].score = t->Data.score;
strcpy(P.con[j].name, t->Data.name);
strcpy(P.con[j].num, t->Data.num);
j++;
p(t->Left);
P.con[j].score = t->Data.score;
strcpy(P.con[j].name, t->Data.name);
strcpy(P.con[j].num, t->Data.num);
j++;
}
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明数据结构二叉搜索树问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)