由括号表达式递归创建二叉树并显示C语言
时间: 2023-11-12 10:03:51 浏览: 39
代码怎么写?
您好,感谢您的提问。以下是由括号表达式创建二叉树并显示C语言代码:
```
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
/*定义树的结构体*/
typedef struct TreeNode {
char data;
struct TreeNode *leftChild, *rightChild;
}TreeNode, *Tree;
int top = -1;
/*定义栈*/
typedef struct Stack {
Tree data[MAX];
}Stack;
Stack s;
void Push(Stack *s, Tree t) {
/*判断栈是否已满*/
if(top == MAX - 1) {
printf("Stack overflow!\n");
exit(0);
}
s->data[++top] = t;
}
Tree Pop(Stack *s) {
/*判断栈是否为空*/
if(top == -1) {
printf("Stack underflow!\n");
exit(0);
}
return s->data[top--];
}
/*创建树*/
Tree CreateTree(char *str) {
int i = 0;
char c = str[i];
Tree t, p;
/*循环判断字符是否为'\0'*/
while(c != '\0') {
switch(c) {
/*左孩子*/
case '(':
Push(&s, t);
p = t;
t = (Tree)malloc(sizeof(TreeNode));
t->leftChild = NULL;
t->rightChild = NULL;
break;
/*右孩子*/
case ')':
t = Pop(&s);
break;
/*树节点*/
default:
p = t;
t = (Tree)malloc(sizeof(TreeNode));
t->data = c;
t->leftChild = NULL;
t->rightChild = NULL;
/*判断p的左右子树是否为空*/
if(p->leftChild == NULL) {
p->leftChild = t;
} else {
p->rightChild = t;
}
break;
}
c = str[++i];
}
return t;
}
/*前序遍历*/
void PreOrder(Tree t) {
if(t != NULL) {
printf("%c", t->data);
PreOrder(t->leftChild);
PreOrder(t->rightChild);
}
}
int main() {
char str[MAX];
printf("请输入由括号表达式表示的二叉树:\n");
scanf("%s", str);
Tree t = CreateTree(str);
printf("前序遍历结果:");
PreOrder(t);
printf("\n");
return 0;
}
```
希望能够对您有所帮助!
相关推荐
![tgz](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)