文章
316
粉丝
0
获赞
0
访问
47.2k
1):我们利用中序遍历进行遍历这颗树,当遍历到的结点左右孩子至少有一个为空此时要加括号;
2):
int getPriority(char op) {
if (op == '+' || op == '-') {
return 1;
} else if (op == '*' || op == '/') {
return 2;
}
return 0;
}
// 将表达式树转换为中缀表达式并输出
void convertToInfix(BTree *root) {
if (root == NULL) {
return;
}
// 叶子节点(操作数),直接输出
if (root->left == NULL && root->right == NULL) {
printf("%s", root->data);
return;
}
// 内部节点(操作符),需要考虑括号
// 左子树需要加括号的情况:左子树存在且左子树操作符优先级低于当前节点操作符优先级
if (root->left != NULL && getPriority(root->data[0]) > getPriority(root->left->data[0])) {
printf("(");
...
登录后发布评论
暂无评论,来抢沙发