文章
280
粉丝
1
获赞
8
访问
87.0k

评分及理由
(1)得分及理由(满分5分)
得分:3分
理由:学生的基本设计思想提到了使用DFS遍历,并区分运算符和非运算符结点,这符合表达式树转换的基本思路。但是,学生的设计思想中未明确说明何时需要添加括号(只提到根结点无需加括号),而标准答案强调根据深度(或子表达式层次)动态添加括号,这是关键点。学生的思路不够完整,未能准确反映操作符的计算次序,因此扣2分。
(2)得分及理由(满分10分)
得分:4分
理由:学生的代码实现了DFS遍历,但存在以下逻辑错误:
1. 代码中直接比较字符串(如`root->data == '+'`),但`data`是字符数组,应使用字符串比较函数(如`strcmp`),否则逻辑错误。扣3分。
2. 代码对所有运算符结点都添加括号(包括根结点的子表达式),但未考虑深度或运算符优先级,可能导致多余括号(如根结点的直接子表达式本不应加括号)。例如,输入示例1时,输出可能为`((a+b)*(c*(-d)))`而非`(a+b)*(c*(-d))`。扣2分。
3. 函数`Fun`中直接拼接根结点数据和左右子树结果,未处理根结点是否为运算符的情况,若根结点为操作数会出错。扣1分。
优点:基本框架正确,区分了叶结点和分支结点。
题目总分:3+4=7分
登录后发布评论
暂无评论,来抢沙发