找出逐级树遍历的级别

时间:2013-04-14 19:58:05

标签: 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(cur->right != NULL)
   queue.enqueue(cur->right);
  }
}

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

1 个答案:

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