Я пытаюсь написать функцию дерева выражений, которая принимает выражение массива символов и выводит префиксную, инфиксную и постфиксную версии. Я написал этот код, и он не выдает никаких ошибок, но при запуске вычисленные значения не выводятся. Я пытался отладить функцию, но до сих пор не могу найти решение. Кто-нибудь может дать мне какие-либо советы о том, что я делаю не так с этим?
void Expression_Tree::build_expression_tree(char input[], int size)
{
ETNode *temp, *t1, *t2;
for (int i = 0; i < size; i++)
{
if(!(i == '+' || i == '-' || i == '*' || i == '/' || i == '^')) {
temp = new ETNode;
temp->left = temp->right = NULL;
temp->input = i;
tree_stack.push(temp);
}
else {
temp = new ETNode;
temp->left = temp->right = NULL;
temp->input = i;
t1 = tree_stack.top();
tree_stack.pop();
t2 = tree_stack.top();
tree_stack.pop();
temp->right = t1;
temp->left = t2;
tree_stack.push(temp);
}
}
temp = tree_stack.top();
tree_stack.pop();
}
Я только что включил функцию build_expression_tree, если в этом нет ничего плохого, значит, он не должен правильно связываться с функциями inorder, preorder и postorder Спасибо!
Это может быть ошибка копирования-вставки, но вы используете i
как будто это было char
,
Я думаю, вы хотите использовать input[i]
вместо этого, по крайней мере, в вашем if
заявление.
Других решений пока нет …