0
void addElement(struct BinaryTree *root, int data) {
if (!root)
return;
BinaryTree *newNode = new BinaryTree;
newNode->data = data;
newNode->right = NULL;
newNode->left = NULL;
queue<BinaryTree> *myqueue = new queue<BinaryTree>;
myqueue->push(*root); // Why do i have to dereference the object to store it in the queue;
BinaryTree *temp;
while (!myqueue->empty()) {
temp = myqueue->front()
//Throwing an error
myqueue->pop();
if (temp->left) {
myqueue->push(*temp->left);
} else {
temp->left = newNode;
break;
}
if (temp->right) {
myqueue->push(*temp->right);
} else {
temp->right = newNode;
break;
}
}
}
C++ не Java, вы не должны динамически выделять все объекты. Ваш объект очереди не должен быть указателем и динамически распределен, это может привести к проблемам с указателями и утечками памяти (которые у вас есть). Вместо этого просто определите его как обычный объект без указателя 'std :: queue myqueue;' –
Что касается разыменования, немного подумайте о типе, хранящемся в очереди, по сравнению с типом 'root'. Кроме того, это смешение является причиной того, что код не будет компилироваться. –