So I am creating a program that takes a postfix expression and converts it to infix using a binary tree. I keep getting a double free or corruption error in my main conversion functon here:
template <typename T>
bool Bet<T>::buildFromPostfix(const list<Token> & postfix)
{
makeEmpty(root);
vector<BinaryNode*> myVector;
for(auto itr = postfix.begin(); itr != postfix.end(); itr++)
{
if(itr->getType() == 1 || itr->getType() == 2 || itr->getType() == 3 )
{
BinaryNode *newNode = new BinaryNode();
newNode->element = itr->getValue();
myVector.push_back(newNode);
}
else
{
BinaryNode *newNode = new BinaryNode();
newNode->element = itr->getValue();
newNode->right = myVector[myVector.size() - 1];
myVector.pop_back();
newNode->left = myVector[myVector.size() - 1];
myVector.pop_back();
myVector.push_back(newNode);
}
}
if(myVector.size() != 1)
{
cout<<"Mismathcing operands and operators with: " <<myVector[0]->element.getValue() <<endl;
return false;
}
root = new BinaryNode(myVector[0]->element, myVector[0]->left,myVector[0]->right);
return true;
}
The error will only occur when the program goes into the if(myVector.size() != 1), the program will cout the statement but give the error right after it returns false.