C++ 找出逐级树遍历的层次

C++ 找出逐级树遍历的层次,c++,algorithm,data-structures,tree,binary-tree,C++,Algorithm,Data Structures,Tree,Binary Tree,我想知道如何找出每个节点所在的级别。 但我想不出来 这是代码部分的一部分,但我必须修改它 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(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)
返回;
q、 排队(根);
而(!queue.empty()){
排队.出队(cur);
如果(cur!=NULL){
coutright!=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);  
   }  
 }    
} 
if(root==NULL)
返回;
智力水平=1;
q、 排队(根);
q、 排队(空);
而(!queue.empty()){
排队.出队(cur);
如果(cur==NULL){
//进入下一阶段
级别++;
if(queue.empty()){
打破
}  
queue.enqueue(NULL);
}    
否则{

CUT看起来像C++,所以我把它标记为这样。到目前为止你尝试了什么?——你使用<代码> null <代码>来指示每个级别的结束。