“C++学习笔记” 关于二叉树:二叉表示树判断算术表达式是否存在错误

该博客介绍了如何使用C++编程判断一个算术表达式是否合法,通过构建二叉表示树来分析。首先,根据运算符优先级将表达式组合,然后从外层括号开始构建树结构。如果遇到括号不匹配、变量名不合法或运算符两侧无操作数的情况,则表达式非法。通过递归分解表达式,找到运算级别最低的运算符作为根节点,直到所有叶子节点都是合法的变量或数。
摘要由CSDN通过智能技术生成

输入一个算术表达式,判断该表达式是否合法,若不合法,给出错误信息;若合法,则输出合法表达式的表达式树。

【数据模型】二叉表示树具有以下特点:1.  叶子结点一定是操作数 2. 分支结点一定是操作符

【算法分析】表达式不合法有三种情况:①左右括号不匹配;②变量名不合法;③运算符两旁无参与运算的变量或数。

【解题思路】1. 根据运算符的优先顺序,将表达式结合成(左操作符 运算符 右操作符)的形式

2. 由外层括号开始,运算符作为二叉表示树的根结点,左操作数作为左子树,右操作数作为右子树

3. 如果某子树对应的操作数是一个表达式,则重复第2步,直到该子树对应的操作数不能分解。

【具体实现】处理时,首先找到运算级别最低的运算符“+”作为根结点,继而确定该根结点的左、右子树结点的表达式,再在对应的范围内寻找运算级别最低的运算符作为子树的根结点,直到范围内无运算符,则剩余的变量或数为表达式树的叶子。

在表达式的左右界范围内寻找运算级别最低的运算符,同时判断运算符两旁有否参与运算的变量或数。若无,则输入表达式不合法;若有,作为当前子树的根结点,设置左子树指针及其左右界值,设置右子树指针及其左右界值。

若表达式在左右界范围内无运算符,则为叶子结点,判断变量名或数是否合法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值