二叉树实现中序表达式转换后序表达式

将中序表达式A+BC-D/E转换为后序表达式ABCDE/-+
将中序表达式构建成如下二叉树,再后序遍历输出二叉树节点即可得到后序表达式。
在这里插入图片描述构建中序表达式二叉树的代码如下


char Stackoperate[MAXSIZE];int topo =-1;
BTNode *StackBTNode[MAXSIZE];int topb =-1;
 BTNode *createBTree( char f[])//实现前缀表达式转后缀表达式
 {
     BTNode *node;
      char *p=f;

     while(*p!='\0')
     {
         if(*p=='+'||*p=='-'||*p=='*'||*p=='/')
         {
             if((topo!=-1)&&(*p=='+'||*p=='-'))//判断操作符
             {
              node = (BTNode*)malloc(sizeof(BTNode));
              node->key=Stackoperate[topo--];
              node->rchild=StackBTNode[topb--];
              node->lchild=StackBTNode[topb--];

              Stackoperate[++topo]=*p;
              StackBTNode[++topb]=node;
             }
             else{
                Stackoperate[++topo]=*p;
             }
         }
         else{
            node=(BTNode*)malloc(sizeof(BTNode));
            node->key=*p;
            node->lchild=node->rchild=NULL;

            StackBTNode[++topb]=node;
         }++p;
     }
     while(topo!=-1)
     {
         node=(BTNode*)malloc(sizeof(BTNode));
         node->key=Stackoperate[topo--];
         node->rchild=StackBTNode[topb--];
         node->lchild=StackBTNode[topb--];

         StackBTNode[++topb]=node;
     }
    return StackBTNode[topb];
 }

发布了26 篇原创文章 · 获赞 11 · 访问量 618

猜你喜欢

转载自blog.csdn.net/weixin_38251305/article/details/103732718