2017 408算法题


思想:表达式树中序遍历加上必要括号即为中缀表达式。表达式最外层(对应根节点)即操作数(即为叶节点)不需要添加括号

代码实现:

typedef struct Node{
    char data[10];
    struct node *left,*right;
}BTree;
void BtreetToE(BTree *root)
{
    BtreeToExp(root,1);
}
void BtreeToExp(BTree *root,int deep)
{
    if(root==Null)return;//空节点返回
    else if(root->left==NULL&&root->right==Null)
        printf("%s",root->data);//输出操作数,不加括号
    else{
        if(deep>1 printf("("));//若有子表达式加一层括号
         BtreeToExp(root->left,deep+1);
        printf("%s",root->data);
        BtreeToExp(root->right,deep+1);
        if(deep>1)printf(")");//若有子表达式加一层括号
    }
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM