昨天晚上,我花了大把的时间研究里面二叉树应用解决计算表达式的问题,一直就没理解,主要是觉得是不是自己错了,又懒,不愿意自己把代码敲到电脑里看看,结果浪费了很多时间。所以还是提醒大家,代码这种东西,有什么好多看的,觉得他错了就自己敲到电脑里去看看!其实也没错太多,就是少了一些东西,导致原代码里的括号完全没有意义,也就是说,书中的代码虽然考虑到了计算表达式中的括号,却什么都没有做,而这其实只要稍稍改进:加一个flag存储上次读到的char,如果是‘)’的话,就要把左式当成运算数来计算。
好了,把正确的代码贴在下面:
#include <iostream>
using namespace std;
class calc
{
enum Type {DATA, ADD, SUB, MULTI, DIV, OPAREN, CPAREN, EOL};
struct node
{
Type type;
int data;
node *lchild, *rchild;
node(Type t, int d=0, node *lc=NULL, node *rc=NULL)










