首页 > 试题广场 >

请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表

[问答题]
请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的 计算次序)并输出。例如,当下列两棵表达式树作为算法的输人时:


输出的等价中缀表达式分别为(a+b)*(c*(-d))和(a*b)+(-(c-d))。 二叉树结点定义如下:
typedef struct node{ 
    char data[10]; //存储操作数或操作符 
    struct node *left, *right; 
}
BTree;
要求: 
 (1)给出算法的基本设计思想。
 (2)根据设计思想,采用 C 或 C++语言描述算法,关键之处给出注释。
void inorder(BTree root)
{
    if(root==null)return;
   if(root->left!=null||root->right!=null)
   {
       cout<<'(';
        inorder(root->left);
       cout<<root->data;
        inorder(root->right);
        cout<<')';
    }
    else cout<<root-data;
}
void main(Btree root)
{
    inorder(root);
}

发表于 2021-12-17 15:32:39 回复(0)
InOrderTraverse(BTree T)
{
    if(T)
    {
        pritnf("(");
        InOrderTraverse(T->left);
        printf("%c",T->data);
        InOrderTraverse(T->right);
        printf(")");
    }
}

发表于 2020-11-12 14:38:20 回复(1)