当前位置: 首页 > news >正文

【PTA数据结构 | C语言版】将表达式树转换成中缀表达式

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

    • 题目
    • 代码

题目

请编写程序,读入两个操作数和一个操作符,建立表达式树,输出中缀表达式。

输入格式:
输入给出 2 个整数和一个字符,依次为表达式的第 1、2 个操作数,和操作符。

输出格式:
在一行中输出中缀表达式,其中左右子表达式各用一对圆括号 () 括起,两对括号中间输出操作符。表达式中没有任何空格。

输入样例:
1 2 +

输出样例:
(1)+(2)

代码

#include <stdio.h>
#include <stdlib.h>// 定义表达式树的节点结构
typedef struct TreeNode {int data;           // 存储操作数或操作符int isOperator;     // 标记是否为操作符struct TreeNode *left, *right;
} TreeNode;// 创建新节点
TreeNode* createNode(int data, int isOperator) {TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));node->data = data;node->isOperator = isOperator;node->left = node->right = NULL;return node;
}// 递归打印中缀表达式
void printInfix(TreeNode* root) {if (root == NULL) return;if (root->isOperator) {printf("(");printInfix(root->left);printf(")%c(", root->data);printInfix(root->right);printf(")");} else {printf("%d", root->data);}
}// 释放树的内存
void freeTree(TreeNode* root) {if (root == NULL) return;freeTree(root->left);freeTree(root->right);free(root);
}int main() {int op1, op2;char op;// 读取输入scanf("%d %d %c", &op1, &op2, &op);// 构建表达式树TreeNode* left = createNode(op1, 0);TreeNode* right = createNode(op2, 0);TreeNode* root = createNode(op, 1);root->left = left;root->right = right;// 输出中缀表达式printInfix(root);printf("\n");return 0;
}

文章转载自:
http://anticipator.dmyyro.cn
http://alluvion.dmyyro.cn
http://apport.dmyyro.cn
http://buchmanism.dmyyro.cn
http://asphaltum.dmyyro.cn
http://capricorn.dmyyro.cn
http://catecholamine.dmyyro.cn
http://blocky.dmyyro.cn
http://bidonville.dmyyro.cn
http://canfield.dmyyro.cn
http://attemperator.dmyyro.cn
http://battered.dmyyro.cn
http://anglicism.dmyyro.cn
http://bookie.dmyyro.cn
http://chivvy.dmyyro.cn
http://aggrandize.dmyyro.cn
http://arala.dmyyro.cn
http://anything.dmyyro.cn
http://apanage.dmyyro.cn
http://careerman.dmyyro.cn
http://bumblepuppy.dmyyro.cn
http://blaeberry.dmyyro.cn
http://ah.dmyyro.cn
http://athambia.dmyyro.cn
http://bookmark.dmyyro.cn
http://apophthegm.dmyyro.cn
http://antihelium.dmyyro.cn
http://carnelian.dmyyro.cn
http://brumous.dmyyro.cn
http://caudle.dmyyro.cn
http://www.dtcms.com/a/280336.html

相关文章:

  • 数仓面试题
  • 2025最新国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • docker停止所有容器和删除所有镜像
  • 从一道题目(阿里2014 Crackme_2)开启unidbg还原算法入门(转载)
  • 强化学习书籍
  • vscode 打开c++文件注释乱码
  • 分布式存储之Ceph使用指南--部署篇(未完待续)
  • Claude 背后金主亚马逊亲自下场,重磅发布 AI 编程工具 Kiro 现已开启免费试用
  • 【交叉编译报错】fatal: not a git repository (or any of the parent directories): .git
  • 分布式全局唯一ID生成:雪花算法 vs Redis Increment,怎么选?
  • 内存的基础相关知识,什么是内存,内存管理
  • 死锁问题以及读写锁和自旋锁介绍【Linux操作系统】
  • Spring 中 @Component和@Bean注解的区别
  • 为何说分布式 AI 推理已成为下一代计算方式
  • SpringBoot 2.x→3.0升级实战:Jakarta EE兼容性改造清单
  • kotlin布局交互
  • Kotlin聚合方法
  • Python 操作Excel工作表:添加、删除、移动、隐藏
  • 前端安全指南:防御XSS与CSRF攻击
  • 给 Excel 整列空格文字内容加上前缀:像给文字穿衣服一样简单!
  • Excel制作玫瑰图
  • PostgreSQL FATAL: sorry, too many clients already 连接数爆满的处理办法
  • excel 通过openpyxl表格下载和插入图片
  • 京东平台商品评论接口接入指南与代码实现
  • 国内大模型技术与应用综述
  • 区块链:以太坊侧链Polygon
  • 日常运维问题汇总-59
  • STL的一些知识点
  • C/C++宏定义中do{}while(0)的妙用
  • CAS单点登录架构详解