//简单起见,每个运算数节点存储的为小写英文字母
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
struct BinTreeNode{
char Element;
struct BinTreeNode* Left;
struct BinTreeNode* Right;
};
struct BinTreeNode* CreateNode(char ch)
{
struct BinTreeNode* temp;
temp=(struct BinTreeNode*)malloc(sizeof(struct BinTreeNode));
temp->Left=NULL;
temp->Right=NULL;
temp->Element=ch;
return temp;
}
void PreTrversal(struct BinTreeNode* ExpTree)
{
if(ExpTree==NULL)
return;
printf("%c ",ExpTree->Element);
if(ExpTree->Left!=NULL)
PreTrversal(ExpTree->Left);
if(ExpTree->Right!=NULL)
PreTrversal(ExpTree->Right);
return;
}
int main()
{
char data[100];
struct BinTreeNode* stack[100];
int top=-1;
gets(data);
for(int i=0;data[i]!='\0';i++){
if(strchr("+-*/",data[i])!=NULL){
struct BinTreeNode* temp=CreateNode(data[i]);
struct BinTreeNode* t1=stack[top--];
struct BinTreeNode* t2=stack[top--];
temp->Left=t2;
temp->Right=t1;
stack[++top]=temp;
}
else{
struct BinTreeNode* temp=CreateNode(data[i]);
stack[++top]=temp;
}
}
struct BinTreeNode* ExpTree=stack[top];
//为了验证,先序遍历一遍
PreTrversal(ExpTree);
return 0;
}把后缀表达式转换为表达式树
最新推荐文章于 2026-05-04 10:37:59 发布
本文介绍了一个使用C语言实现的表达式树构建过程。通过输入一个包含运算符和操作数的字符串,程序能够创建对应的二叉表达式树,并利用先序遍历的方法验证树的正确性。该方法适用于简单的算术表达式,且操作数限定为小写字母。
4005

被折叠的 条评论
为什么被折叠?



