我想知道如何找出每个节点的级别。
但我想不通。
这是代码的一部分,但我必须修改它。

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

07-24 09:45
查看更多