我试图编写一个表达式树函数,它接受一个字符数组表达式并输出前缀,中缀和后缀版本。我已经编写了这段代码并且它没有抛出任何错误,但是在运行时,计算出的值不会打印出来。我试图调试该功能,但仍无法提出解决方案。有人能够给我任何关于我做错了什么的提示吗?
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 :(得分:2)
这可能是复制粘贴错误,但您正在使用i
,就像它是char
一样。
我想您至少在input[i]
声明中使用if
。