c语言算术表达式二叉树的创建和求值
时间: 2023-10-04 09:08:28 浏览: 236
算术表达式可以通过二叉树来表示,每个节点表示一个操作符或操作数。对于操作符节点,左子节点表示操作符左侧的表达式,右子节点表示操作符右侧的表达式;对于操作数节点,左右子节点都为空。
创建二叉树的过程可以通过递归实现,具体步骤如下:
1. 将表达式字符串转换为字符数组,依次遍历每个字符;
2. 如果当前字符是数字,则构造一个操作数节点,并将该节点作为当前节点的左子节点;
3. 如果当前字符是操作符,则构造一个操作符节点,并将该节点作为当前节点的右子节点;
4. 对于操作符节点,递归调用创建二叉树的函数,将左侧表达式字符串作为参数传入左子节点,将右侧表达式字符串作为参数传入右子节点;
5. 返回根节点。
对于求值操作,也可以通过递归实现,具体步骤如下:
1. 如果当前节点是操作数节点,则直接返回该节点的值;
2. 如果当前节点是操作符节点,则递归调用求值函数,将左子节点的值作为参数传入左侧表达式,将右子节点的值作为参数传入右侧表达式,然后根据操作符计算结果并返回。
在 C 语言中,可以使用结构体来定义二叉树节点,如下所示:
```
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
使用该结构体,可以方便地创建二叉树和进行求值操作。
阅读全文