在队列中存储和检索结构

时间:2015-07-29 16:43:57

标签: c++ struct queue

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;
        }

    }
}

1 个答案:

答案 0 :(得分:0)

  

myqueue-&GT;推(*根); //为什么我必须取消引用对象以将其存储在队列中;

这是因为你的队列模板是用BinaryTree类型实例化的,它不是指针,所以你不能把它放在BinaryTree *root类型的变量里面。您必须使用*root取消引用它。

如果您有queue<BinaryTree*>,那么您可以使用myqueue->push(root);