二叉树表达式求值C语言代码
时间: 2024-10-29 09:16:07 浏览: 52
c语言 实现二叉树操作 用栈实现算术表达式求值
在C语言中,我们可以使用递归的方式来实现二叉树表达式的求值。首先,需要定义一个结构体表示二叉树节点,包含数值和指向左右子节点的指针。假设我们有基本的加减乘除操作,可以创建如下的节点结构:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode *left; // 左子节点
struct TreeNode *right; // 右子节点
} TreeNode;
// 定义运算符优先级,这里简单地设为 + - * /
int precedence(char op) {
return (op == '+' || op == '-') ? 1 : 2;
}
int evaluate(TreeNode* node) {
if (node == NULL) {
return 0;
}
switch (node->val) {
case '+':
return evaluate(node->left) + evaluate(node->right);
case '-':
return evaluate(node->left) - evaluate(node->right);
case '*':
return evaluate(node->left) * evaluate(node->right);
case '/':
if (evaluate(node->right) == 0) {
printf("Error: Division by zero is not allowed.\n");
return 0;
}
return evaluate(node->left) / evaluate(node->right);
default:
return node->val; // 如果是数字直接返回
}
}
```
阅读全文