#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct BiTNode { char date[4]; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; int creBBiTree &Q) { Q = new BiTNode; if ~scanf_s"%s", Q->date, 4) && Q->date[0] != '#') { if Q->date[0] == '#') Q = NULL; else { creBQ->lchild); creBQ->rchild); } return 1; } Q = NULL; return -1; } double get_numchar *a) { int length; int i; double result = 0; if a[0] == 'A') return 1; else if a[0] == 'J') return 11; else if a[0] == 'Q') return 12; else if a[0] == 'K') return 13; else { length = strlena); for i = 0; i < length; i++) { result = result * 10 + a[i] - '0'; } } return result; } double priBBiTree Q) { double num = 0; if Q == NULL) return num; if Q->date[0] == '/' || Q->date[0] == '*' || Q->date[0] == '-' || Q->date[0] == '+') { double i, j; i = priBQ->lchild); j = priBQ->rchild); switch Q->date[0]) { case '+': num = i + j; break; case '-': num = i - j; break; case '/': if i == 0 || j == 0) return 0; num = i / j; break; case '*': num = i * j; break; } } else return get_numQ->date); return num; } void priABiTree Q) { if Q == NULL) return; if Q->date[0] == '/' || Q->date[0] == '*' || Q->date[0] == '-' || Q->date[0] == '+') { printf""); priAQ->lchild); printf"%s", Q->date); priAQ->rchild); printf")"); } else printf"%s", Q->date); } int main) { BiTree Q; while creBQ) == 1) { double k; k = priBQ); if k ==24||k== 23.999999999999989) { priAQ); printf"=%d ", 24); } else printf"NO "); } return 0; }