我想知道如何找出每个节点的级别。
但我想不通。
这是代码的一部分,但我必须修改它。
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);
}
}
如何修改代码,让我知道每个节点的级别?
希望你们能给我一些关于这个问题的算法。
最佳答案
你做的是水平顺序遍历,这是在正确的方向。如果需要打印您所处的级别:
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);
}
}
}