二叉树中的表达式按中缀表达式输出,并加上括号,给出c语言代码
时间: 2024-04-17 22:25:51 浏览: 125
下面是一个示例的 C 代码,用于将二叉树中的表达式按中缀表达式输出,并加上括号:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
char data;
struct Node* left;
struct Node* right;
};
struct Node* createNode(char data) {
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
void inorderTraversal(struct Node* root) {
if (root == NULL) {
return;
}
if (root->left != NULL || root->right != NULL) {
printf("(");
}
inorderTraversal(root->left);
printf("%c", root->data);
inorderTraversal(root->right);
if (root->left != NULL || root->right != NULL) {
printf(")");
}
}
int main() {
// 构建示例二叉树
struct Node* root = createNode('+');
root->left = createNode('*');
root->right = createNode('-');
root->left->left = createNode('a');
root->left->right = createNode('b');
root->right->left = createNode('c');
root->right->right = createNode('d');
// 按中缀表达式输出并加上括号
inorderTraversal(root);
return 0;
}
```
此代码中,我们首先定义了一个 `Node` 结构体,表示二叉树的节点。然后,我们实现了一个 `createNode` 函数,用于创建节点。接下来,我们实现了一个 `inorderTraversal` 函数,使用中序遍历的方式输出二叉树的中缀表达式,并在需要的地方加上括号。最后,在 `main` 函数中构建了一个示例二叉树,并调用 `inorderTraversal` 函数进行输出。注意,此处示例二叉树为了方便起见,直接在代码中进行构建,实际情况下可能需要根据具体需求进行修改。
阅读全文