我有一个结构,我想创建这个结构的队列。我在推送新元素时遇到问题。请帮忙。
#include <iostream>
#include <queue>
#include <deque>
#include <list>
using namespace std;
struct Node {
Node *left, *right;
int key;
};
queue<Node> q;
void updateLevel( Node &n, int &level){
if(n.left!=NULL && n.right!=NULL){
level+=2;
q.push(n.left);
q.push(n.right);
}
else if(n.left!=NULL || n.right!=NULL){
level++;
if(n.left!=NULL) q.push(n.left);
if(n.right!=NULL) q.push(n.right);
}
};
void printTree(Node root){
//if(root!=NULL){
q.push(root);
Node n;
while(!q.empty()){
n =q.pop();
updateLevel(n,nextLevel);
curLevel--;
cout<<n.key;
if(curLevel<=0){
cout<<endl;
curLevel=nextLevel;
nextLevel=0;
}
}
//}
};
int main() {
Node rootTree;
printTree(rootTree);
return 0;
}
我从 main 调用这个函数。在检查关于 NULL 的 if 条件时,我也遇到了错误。请帮忙