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

将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出

请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。例如,当下列两棵表达式树作为算法输入时:

输出的中缀表达式分别为 (a+b)∗(c∗(−d)) 和 (a∗b)+(−(c−d)) 。

二叉树结点的定义如下:

typedef struct node{ char data[10];   // 存储操作数或操作符struct node *left, *right;     
}BTree;

要求:

⑴ 给出算法的基本设计思想。

⑵ 根据设计思想,采用C或C++语言描述算法,关键之处给出注释。

思想:利用中序遍历。除了根结点和叶节点以外,遍历到其他结点时,在遍历左子树之前加上左括号,遍历右子树之后加上右括号。 

代码:

void BtreeInExp(BTreen *T,int depth){//空树if(T==NULL){return ;} //左子树 if(depth>1&&(T->left!=NULL||T->right !=NULL)){printf("(");}if(T->left!=NULL){BtreeInExp(T->left,1+depth);}printf("%s",T->data);//右子树if(T->right!=NULL){BtreeInExp(T->right,1+depth);} if(depth>1&&(T->left!=NULL||T->right !=NULL)){printf(")");}
}
//程序入口 
void BtreeInExp(BTree *T){BtreeInExp(T,1);
} 


http://www.mrgr.cn/news/41530.html

相关文章:

  • 【重学 MySQL】五十二、MySQL8 新特性:计算列
  • 官方外卖霸王餐对接接口渠道如何选择?
  • wsl(4) -- 编译驱动模块
  • 【FPGA开发】Xilinx FPGA差分输入时钟的使用方法
  • 10月2日笔记(内网资源探测篇)
  • 鸢尾花书实践和知识记录[数学要素3-3几何]
  • 系统安全 - Linux 安全模型及实践
  • AI通用大模型编程需要的能力
  • 《重生到现代之从零开始的C语言生活》—— 内存函数
  • 【GESP】C++一级练习BCQM3021,输入-计算-输出-2
  • Python(三)——列表
  • JavaScript for循环语句
  • npm包管理深度探索:从基础到进阶全面教程!
  • UniVue大版本更新:UniVue2.0.0-preview
  • 枫叶MTS格式转换器- 强大、操作简单的MTS、M2TS视频转换工具供大家学习研究参考
  • 老年人最真实的养老需求
  • 【GESP】C++一级练习BCQM3022,输入-计算-输出-3
  • Mysql 索引底层数据结构和算法
  • IDEA 设置自动定位文件
  • 【分布式微服务云原生】如何在ActiveMQ中优雅处理提前支付的延时订单