二叉树 - 表达式二叉树(C语言)

问题描述:

表达式可以用表达式二叉树来表示。对于简单的四则运算表达式,请实现以下功能。
 (1)对于任意给出的前缀表达式(不带括号)、中缀表达式(可以带括号)或后缀表达式(不带括号),能够在计算机内部构造出一颗表达式二叉树,并且以图示显示出来(字符图或图形的形式)。
 (2)对于构造好的内部表达式二叉树、按照用户的要求,输出相应的前缀表达式(不带括号)、中缀表达式(可以带括号,但不允许冗余括号)或后缀表达式(不带括号)

相关知识点:

1.后缀表达式的特点是:一定以两个操作数开始,且以操作符结尾,形如“a b + c d e + * *”就是一个后缀表达式
2.表达式树的特点就是:树的树叶是操作数(常数或变量),而其他节点为操作符。由于一般的操作符都是二元的,所以表达式树一般的都是二叉树。
3.中缀表达式建树过程:代码中InTree()为递归函数、有三个参数、s - 字符串的首地址,i和j分别为子串起始位置和终止位置。如果i == j,说明子串只有一个字符,即为叶子节点,则创建只有一个根节点的二叉树并返回之。如果i != j,根据运算规则(先乘除后加减),在串中找‘+’和‘-’,以最后的‘+’或‘-’为根(体现从左到右的原则);如果没有‘+’或‘-’时,则进一步找‘*’或’/‘(体现先乘除后加减),同样以最后的运算符为根,将串分为两部分,即左子树和右子树。创建一个根节点,将找到的运算符放入,递归调用自身进入左子树的建树过程,之后递归调用自身进入右子树的建树过程。
5.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值