文章

480

粉丝

0

获赞

1

访问

65.1k

头像
2017年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年12月12日 15:54
阅读数 14


评分及理由

(1)得分及理由(满分5分)

得分:3分

理由:学生给出了非递归中序遍历的基本思想,并提到了在入栈前打印左括号、出栈后打印右括号,这与标准答案通过深度控制括号的思路在本质上一致(都是在中序遍历过程中根据结点位置添加括号)。但学生的设计思想描述较为简略,没有明确说明如何判断“非根非叶结点”以及括号添加的完整规则(例如,何时不需要括号),且未提及根结点和叶结点的特殊情况处理。因此扣2分。

(2)得分及理由(满分10分)

得分:6分

理由:学生实现了非递归中序遍历,并在遍历过程中尝试添加括号,整体框架正确。但存在以下逻辑错误:
1. 在向左子树深入时,每次入栈前都判断并打印左括号,这会导致左括号打印过早且可能多余(例如,对于操作数结点也会打印括号)。标准答案是在进入子表达式(即非叶结点且深度>1)时才打印括号,而学生的判断条件“!IsRootOrLeaf(root,p)”在遇到非根非叶的内部结点时就会打印左括号,这可能导致括号嵌套错误或多余括号。
2. 在出栈时打印右括号的逻辑同样存在问题,因为出栈顺序与中序遍历的访问顺序不完全对应,可能导致右括号位置错误。
3. 代码中使用了未定义的栈操作(如IsEmpty(S)、S.GetTop()),但根据上下文可推断是栈的基本操作,不扣分。
由于括号添加逻辑存在明显错误,扣4分。

题目总分:3+6=9分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发