二叉搜索树——模拟

对于一个无穷的满二叉排序树(如图),节点的编号是1,2,3,…。对于一棵树根为X的子树,沿着左节点一直往下到最后一层,可以获得该子树编号最小的节点;沿着右节点一直往下到最后一层,可以获得该子树编号最大的节点。现在给出的问题是“在一棵树根为X的子树中,节点的最小编号和最大编号是什么?”。请你给出答案。

二叉搜索树——模拟_第1张图片

输入格式:
输入的第一行给出测试用例的数目,一个整数N。在后面的N行中,每行给出一个整数X(1<=X<=2^31-1),表示子树树根的编号。

输出格式:
输出N行,第i行给出第i个问题的答案。

输入样例:
2
8
10

输出样例:
1 15
9 11

#include 
using namespace std;
#define int long long
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef pair PII;
const int N=2e6+10;
int t,n;
signed main()
{
    ios;
    cin>>t;
    while (t--)
    {
        cin>>n;
        int m=n;
        int cnt=1;
        while (m%2==0)
        {
            m /=2;
            cnt *=2;
        }
        cout<

你可能感兴趣的:(算法,数据结构)