0

我想知道如何找出每个节点所在的级别。但我无法弄清楚。

这是代码部分的一部分,但我必须对其进行修改。

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

如何修改代码,让我知道每个节点的级别?希望你们能给我一些关于这个问题的算法。

4

1 回答 1

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);  
   }  
 }    
} 
于 2013-04-14T20:06:30.637 回答