递归判断当前节点和n的关系就好了。如果小于等于n那就是存在。
#include<iostream>
using namespace std;
int count(int i,int n){
if(i>n) return 0;
return count(2*i,n)+ count(2*i+1,n)+1;
}
int main(){
int n,m;
while(cin >> m >> n){
if(n==0) break;
cout << count(m,n) <<'\n';
}
return 0;
}
count函数就是计算树的节点个数。
结果: