BTree rootOfTree; // 定义全局变量,表示整棵表达式树的根节点
void printInfixExp(BTree root) { // 将给定的表达式树转换为中缀表达式并输出
if (root == NULL) return; // 如果表达式树为空,直接返回
if (root->lchild == NULL && root->rchild == NULL) { // 如果当前节点是叶子节点(即操作数)
printf("%s", root->data); // 直接输出该节点的值
}
else { // 如果当前节点是操作符
if (root != rootOfTree) printf("("); // 如果当前表达式树不是整个表达式,需要加一层括号
printInfixExp(root->lchild); // 递归转换左子树
printf("%s", root->data); // 输出当前操作符
printInfixExp(root->rchild); // 递归转换右子树
if (root != rootOfTree) printf(")"); // 如果当前表达式树不是整个表达式,需要加一层括号
}
}
int main() {
// 创建表达式树
rootOfTree = createBTree();
// 转换为中缀表达式并输出
printf("The infix expression is: ");
printInfixExp(rootOfTree);
printf("\n");
return 0;
}
将给定的表达式树(二叉树)转换为等价的中缀表达式,(通过括号反应操作符的计算次序)并输出 最外层带括号的代码
最新推荐文章于 2023-11-07 17:36:06 发布