POJ 2309 BST(二叉搜索树)

思路:除以2^k,找到商为奇数的位置,k为层数,有2^(k+1)-1个节点

这里直接用位运算,x & -x 就求出 2^k 了。

#include<iostream>
using namespace std;

long lowbit(long x)
{
	return x & -x;
}
int main()
{
	long n,x;
	cin>>n;
	while(n--)
	{
		cin>>x;
		cout<<x-lowbit(x)+1<<' '<<x+lowbit(x)-1<<endl;
	}
	return 0;
}


原文地址:https://www.cnblogs.com/gongpixin/p/4477444.html