文章

62

粉丝

0

获赞

0

访问

10.0k

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

(1)
输出表达式树的中序遍历,并在遍历每个子树前输出'(',遍历完一棵子树后输出')'。
(2)
// isRoot在根节点为true
void Print(node *root, bool isRoot)
{
    // 叶子节点输出后直接return
    if (!root->left && !root->right) {
        printf("%s", data);
        return;
    }
    // 非根子树先输出左括号
    if (!isRoot) {
        printf("(");
    }
    Print(root->left, false);
    printf("%s", data);
    Print(root->right, false);
    // 非根子树完成遍历输出右括号
    if (!isRoot) {
        printf(")");
    }
}


评分及理由

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

得分:3分

理由:学生的基本设计思想正确,即通过中序遍历输出表达式,并在适当位置添加括号。但是描述不够精确,没有明确指出括号添加的规则(只在非根节点处添加括号),且没有说明深度或层次的概念。标准答案中通过深度参数控制括号的添加,更加严谨。

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

得分:6分

理由:

  • 代码整体结构正确,采用了中序遍历的思路。
  • 使用了isRoot参数来控制最外层不添加括号,这一点是正确的。
  • 但是存在逻辑错误:在代码中使用了未定义的变量"data",应该是...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发