c语言编程实现利用二叉树求表达式的值
时间: 2024-03-01 07:28:19 浏览: 75
利用二叉树求表达式值
以下是利用二叉树求表达式的值的 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode, *BinaryTree;
// 创建一个节点
TreeNode *createNode(char value) {
TreeNode *node = (TreeNode *)malloc(sizeof(TreeNode));
node->data = value;
node->left = NULL;
node->right = NULL;
return node;
}
// 创建二叉树
BinaryTree createTree() {
BinaryTree root = NULL;
char value;
scanf("%c", &value);
if (value != '#') {
root = createNode(value);
root->left = createTree();
root->right = createTree();
}
return root;
}
// 计算表达式
int evaluate(BinaryTree root) {
if (!root) return 0;
if (isdigit(root->data)) {
return root->data - '0';
}
int left = evaluate(root->left);
int right = evaluate(root->right);
switch (root->data) {
case '+': return left + right;
case '-': return left - right;
case '*': return left * right;
case '/': return left / right;
default: return 0;
}
}
int main() {
BinaryTree root = createTree();
int result = evaluate(root);
printf("Result: %d\n", result);
return 0;
}
```
代码中,我们使用 `TreeNode` 结构体表示二叉树的节点,其中 `data` 表示节点的值,`left` 和 `right` 分别表示左右子树。使用 `createNode` 函数创建一个新的节点,使用 `createTree` 函数创建二叉树,其中 `#` 表示空节点。
使用 `evaluate` 函数计算表达式的值,如果当前节点的值是数字,直接返回,否则递归计算左右子树的值,并根据当前节点的值进行相应的计算。最后在 `main` 函数中调用 `createTree` 和 `evaluate` 函数,并输出结果。
这是一个简单的例子,对于复杂的表达式,需要使用中缀表达式转后缀表达式等算法进行处理。
阅读全文