表达式树的创建

#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
    char date[4];
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

int creB(BiTree &Q)
{
    Q=new BiTNode;
    if(~scanf("%s",Q->date)&&Q->date[0]!='#')
    {
        if(Q->date[0]=='#')
            Q=NULL;
        else
        {
            creB(Q->lchild);
            creB(Q->rchild);
        }
        return 1;
    }
    Q=NULL;
    return -1;
}
void priB(BiTree Q)
{
    if(Q==NULL)
        return;
    if(Q->date[0]=='/'||Q->date[0]=='*'||Q->date[0]=='-'||Q->date[0]=='+')
    {
        printf("(");
        priB(Q->lchild);
        printf("%s",Q->date);
        priB(Q->rchild);
        printf(")");
    }
    else
        printf("%s",Q->date);

}

int main()
{
    BiTree Q;
    while(creB(Q)==1)
    {
        priB(Q);
        printf("\n");
    }
    return 0;
}

 

posted @ 2021-06-21 11:17  Mr-Yao  阅读(138)  评论(0编辑  收藏  举报