使用堆栈构建表达式树

时间:2016-05-02 11:28:13

标签: c++ stack expression-trees

我试图编写一个表达式树函数,它接受一个字符数组表达式并输出前缀,中缀和后缀版本。我已经编写了这段代码并且它没有抛出任何错误,但是在运行时,计算出的值不会打印出来。我试图调试该功能,但仍无法提出解决方案。有人能够给我任何关于我做错了什么的提示吗?

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函数。谢谢!

1 个答案:

答案 0 :(得分:2)

这可能是复制粘贴错误,但您正在使用i,就像它是char一样。

我想您至少在input[i]声明中使用if