Использование стека для построения дерева выражений

Я пытаюсь написать функцию дерева выражений, которая принимает выражение массива символов и выводит префиксную, инфиксную и постфиксную версии. Я написал этот код, и он не выдает никаких ошибок, но при запуске вычисленные значения не выводятся. Я пытался отладить функцию, но до сих пор не могу найти решение. Кто-нибудь может дать мне какие-либо советы о том, что я делаю не так с этим?

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 Спасибо!

0

Решение

Это может быть ошибка копирования-вставки, но вы используете i как будто это было char,

Я думаю, вы хотите использовать input[i] вместо этого, по крайней мере, в вашем if заявление.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector