考点:完全二叉树的性质
AC代码:
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int d(int x) {//返回层次
int tmp = 1;
while (x > 1) {
tmp++;
x /= 2;
}
return tmp;
}
int main() {
int m; int n;
while (cin >> m >> n) {
if (m == 0 && n == 0)break;
int a = d(m); int b = d(n);
int tmp = 0;
int now = m;
int w = 1;
for (int i = a; i < b; i++) {
now *= 2;
tmp += w;
w *= 2;
}
if (n >= now) {
tmp += min(n - now + 1, w);
}
cout << tmp << endl;
}
}

本文介绍了一个用于计算完全二叉树中特定节点到根节点路径上节点数量的算法。通过递归地确定节点的层次,并计算从较低层次到较高层次的节点数,该算法能够高效地解决相关问题。代码实现使用了C++,并展示了如何通过层次信息来优化计算过程。
357

被折叠的 条评论
为什么被折叠?



