用C语言 写一个用中序表达式创建的二叉树并求值
时间: 2024-02-25 09:56:54 浏览: 87
用C语言编写二叉树
下面是一个用C语言编写的中序表达式创建二叉树并求值的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建节点
TreeNode *createNode(char data) {
TreeNode *node = (TreeNode *) malloc(sizeof(TreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 创建二叉树
TreeNode *createBinaryTree() {
char ch;
scanf("%c", &ch);
if (ch == '\n') {
return NULL;
}
TreeNode *node = createNode(ch);
if (isdigit(ch)) {
return node;
}
node->left = createBinaryTree();
node->right = createBinaryTree();
return node;
}
// 计算表达式
int evaluate(TreeNode *root) {
if (root == NULL) {
return 0;
}
if (isdigit(root->data)) {
return root->data - '0';
}
int leftValue = evaluate(root->left);
int rightValue = evaluate(root->right);
switch (root->data) {
case '+':
return leftValue + rightValue;
case '-':
return leftValue - rightValue;
case '*':
return leftValue * rightValue;
case '/':
return leftValue / rightValue;
default:
return 0;
}
}
int main() {
printf("请输入中序表达式:\n");
TreeNode *root = createBinaryTree();
printf("计算结果:%d\n", evaluate(root));
return 0;
}
```
程序运行时,会提示用户输入中序表达式,然后根据表达式创建二叉树,并计算表达式的值。程序使用递归的方式遍历二叉树,并根据节点的值计算表达式的值。注意,程序假设输入的表达式是合法的。
阅读全文