后缀转前缀

在这里插入图片描述
该方法,将其转成二叉树并用前序输出即为后序转前序的方法

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct tree
{
    char no;
    struct tree* left;
    struct tree* right;
}TREE;
typedef struct tree* Tree;
typedef struct queue
{
    struct tree* Array[100];
    int front;
    int rear;
}QUEUE;
//typedef struct queue* Queue;
QUEUE Q;

void Push(Tree T)
{
    Q.Array[Q.rear++]=T;
}

Tree Pop()
{
    return Q.Array[--Q.rear];
}

void Preorder(Tree root)
{
    if(root!=NULL)
    {
        printf("%c ",root->no);
        Preorder(root->left);
        Preorder(root->right);
    }
}

int main()
{
    Tree T=NULL;
    Tree root=NULL;
    char initial[100];
    int length=0;
    Tree tempr, templ;
    fgets(initial,99,stdin);
    length=strlen(initial);
    for(int i=0;i<length;i++)
    {

        if(initial[i]>='0'&&initial[i]<='9')
        {
            if(root==NULL)
            {
                T=(Tree)malloc(sizeof(struct tree));
                T->no=initial[i];
                T->left=NULL;
                T->right=NULL;
                root=T;
            }
            else
            {
                T=(Tree)malloc(sizeof(struct tree));
                T->no=initial[i];
                T->left=NULL;
                T->right=NULL;
            }
            Push(T);
        }
        if(initial[i]=='+'||initial[i]=='-'||initial[i]=='*'||initial[i]=='/')
        {
            tempr=Pop();//出栈后放入右节点//
            templ=Pop();//出栈后放入左节点//
            T=(Tree)malloc(sizeof(struct tree));
            T->no=initial[i];
            T->left=templ;
            T->right=tempr;
            root=T;
            Push(T);
        }
    }
    Preorder(root);
    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值