数据结构题库
129 / 2332017 · 解答题

2017 年 408 真题

2017 年 408 数据结构 · 第 41 题

选中文字高亮 · 下划线

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

q41 question figure 1

输出的中缀表达式分别为 (a+b)*(c*(d)) 和 (a*b)+((cd)) 。

二叉树结点的定义如下:

typedef struct node{
    char data[10];   // 存储操作数或操作符
    struct node *left, *right;
} BTree;

要求:

(1) 给出算法的基本设计思想。

(2) 根据设计思想,采用 C 或 C++ 语言描述算法,关键之处给出注释。