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;
}
}
}
答案 0 :(得分:0)
myqueue-&GT;推(*根); //为什么我必须取消引用对象以将其存储在队列中;
这是因为你的队列模板是用BinaryTree
类型实例化的,它不是指针,所以你不能把它放在BinaryTree *root
类型的变量里面。您必须使用*root
取消引用它。
如果您有queue<BinaryTree*>
,那么您可以使用myqueue->push(root);