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 <代码>来指示每个级别的结束。