我想知道如何找出每个节点所在的级别。 但我无法理解。
这是代码部分的一部分,但我必须对其进行修改。
if(root == NULL)
return;
q.enqueue(root);
while(!queue.empty()){
queue.dequeue(cur);
if( cur != NULL){
cout<<cur->data<<" ";
if(cur->left != NULL)
queue.enqueue(cur->left);
if(cur->right != NULL)
queue.enqueue(cur->right);
}
}
如何修改代码,以便我可以知道每个节点的级别? 希望你们能给我一些关于这个问题的算法。
答案 0 :(得分:2)
您正在进行正确方向的水平顺序遍历。如果您需要打印您所在的级别:
if(root == NULL)
return;
int level = 1;
q.enqueue(root);
q.enqueue(NULL);
while(!queue.empty()){
queue.dequeue(cur);
if(cur == NULL){
//going to next level
level++;
if(queue.empty()){
break;
}
queue.enqueue(NULL);
}
else {
cout << "LEVEL is: " << level;
cout<<cur->data<<" ";
if(cur->left != NULL){
queue.enqueue(cur->left);
}
if(cur->right != NULL){
queue.enqueue(cur->right);
}
}
}