文章

8

粉丝

0

获赞

1

访问

582

头像
2017年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年6月27日 15:00
阅读数 25

1.采用中序遍历的思想,用flag表示遍历的方向,当往左遍历时为1,此时为NULL,输出左括号,往右时为2,此时为NULL,输出右括号,不为NULL,输出当前值
2.

void func(BiTree* tree,int flag){
    //tree为当前访问节点,flag为标记
    if(tree != NULL){
        func(tree->left,1);
        printf("%s", tree->data);   // 输出操作数
        func(tree->right,2);
    }else if(flag==1){
        printf("%s","(");//方向左边,输出左括号
    }else if(flag == 2){
        printf("%s",")");//方向右边,输出右括号
    }
}

评分及理由

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

得分:3分

理由:学生的基本设计思想提到了中序遍历,这是正确的。但关于括号的处理方式描述不够准确,没有明确说明何时需要加括号(如仅在非根节点且非叶子节点时需要加括号),且flag的使用方式与标准答案不同,可能导致括号添加不正确。因此扣2分。

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

得分:5分

理由:学生的代码实现了中序遍历,但括号处理逻辑存在严重问题。代码中当节点为NULL时根据flag输出括号,这会导致在叶子节点的左右子树(均为NULL)时错误地输出括号,从而破坏表达式的正确性。此外,未正确处理根节点和叶子节点的括号添加规则。因此扣5分。

题目总分:3+5=8分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发