实验10 利用二叉树求解表达式的值

一、实验项目内容(实验题目)

  利用二叉树求解表达式的值

二、关键算法步骤(用文字描述)

1.输入表达式,创建一个基于二叉树表达式的表达数,里面包含数 节点定义。定义了数的节点和节点指针。

2.对表达式树进行后序遍历,得到表达式的值。

3.针对算术表达式,都可用二叉树来表示。表达式对应的二叉树创建后,利用二叉树的遍历等操作,很容易实现表达式的求值运算。由于创建的表达式树需要准确的表达运算次序,因此在扫描表达式创建表达式树的过程中,当遇到运算符时不能直接创建结点,而应将其与前面的运算符进行优先级比较,根据比较的结果再进行处理。

#include<iostream>
#include<string>
#define ERROR -1
#define MAXSIZE 100
using namespace std;

typedef struct BiTNode{                             //二叉树的二叉链表存储表示
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

typedef struct{                  // 字符栈定义
    char *base;
    char *top;
    int stacksize;
}SqStack;

typedef struct{                   //树栈定义
    BiTree *base;
    BiTree *top;
    int stacksize;
}BiTreeStack;


void  InitStack(SqStack &S){             //字符栈初始化
    S.base=new char[MAXSIZE];
    if(!S.base) exit(-1);
    S.top=S.base;
    S.stacksize=MAXSIZE;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值