将给定的表达式树(二叉树)转换为等价的中缀表达式,(通过括号反应操作符的计算次序)并输出 最外层带括号的代码

BTree rootOfTree; // 定义全局变量,表示整棵表达式树的根节点
void printInfixExp(BTree root) { // 将给定的表达式树转换为中缀表达式并输出
    if (root == NULL) return; // 如果表达式树为空,直接返回
    if (root->lchild == NULL && root->rchild == NULL) { // 如果当前节点是叶子节点(即操作数)
        printf("%s", root->data); // 直接输出该节点的值
    }
    else { // 如果当前节点是操作符
        if (root != rootOfTree) printf("("); // 如果当前表达式树不是整个表达式,需要加一层括号
        printInfixExp(root->lchild); // 递归转换左子树
        printf("%s", root->data); // 输出当前操作符
        printInfixExp(root->rchild); // 递归转换右子树
        if (root != rootOfTree) printf(")"); // 如果当前表达式树不是整个表达式,需要加一层括号
    }
}
int main() {
    // 创建表达式树
    rootOfTree = createBTree();
    // 转换为中缀表达式并输出
    printf("The infix expression is: ");
    printInfixExp(rootOfTree);
    printf("\n");
    return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值