✅ The verified answer to this question is available below. Our community-reviewed solutions help you understand the material better.
PNode MakeTree (char Expr[], int first, int last)
{ int MinPrt, i, k, prt; PNode Tree = new Node; // создать в памяти новую вершину
if ( first == last ) { // конечная вершина: число или
Tree->data = Expr[first]; // переменная
Tree->left = NULL; Tree->right = NULL;
return Tree;
}
MinPrt = 100;
for ( i = first; i <= last; i ++ )
{ prt = Priority ( Expr[i] );
if ( prt <= MinPrt )
{ // ищем последнюю операцию
MinPrt = prt; // с наименьшим приоритетом
k = i;
} }
Tree->data = Expr[k]; // внутренняя вершина (операция)
Tree->left = MakeTree (Expr,first,k-1); // рекурсивно строим
Tree->right = MakeTree (Expr,k+1,last); // поддеревья
return Tree; }
Get Unlimited Answers To Exam Questions - Install Crowdly Extension Now!