作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道如何找出每个节点所在的级别。但我想不通。
这是部分代码,但我必须修改它。
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);
}
}
}
关于c++ - 逐级遍历树找出层次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003677/
我有一个代表最大堆的数组。例如 84 81 41 79 17 38 33 15 61 6 所以根是最大值。索引 i 处的每个中间层节点最多可以有两个 child 。它们将位于 2*i+1 和 2*i+
我是一名优秀的程序员,十分优秀!