• codeup 二叉树(BFS爆内存版)


    问题 B: 二叉树

    时间限制: 1 Sec  内存限制: 32 MB
    提交: 124  解决: 60
    [提交][状态][讨论版][命题人:外部导入]

    题目描述


        如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。

        比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。

    输入

    输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 <= m <= n <= 1000000000)。最后一组测试数据中包括两个0,表示输入的结束,这组数据不用处理。

    输出

     对于每一组测试数据,输出一行,该行包含一个整数,给出结点m所在子树中包括的结点的数目。

    样例输入

    3 7
    142 6574
    2 754
    0 0
    

    样例输出

    3
    63
    498
    /**********************
    author: yomi
    date: 18.8.15
    ps:
    **********************/
    #include <iostream>
    #include <queue>
    using namespace std;
    int main()
    {
        int m, n;
        queue<int>q;
        while(!q.empty())
            q.pop();
        while(cin >> m >> n && m && n){
            int cnt = 0;
            q.push(m);
            while(!q.empty()){
                cnt++;
                int t = q.front();
                q.pop();
                if(2*t<=n)
                    q.push(2*t);
                if(2*t+1<=n)
                    q.push(2*t+1);
            }
            cout << cnt << endl;
        }
        return 0;
    }
    /**
    3 7
    142 6574
    2 754
    0 0
    3
    63
    498
    **/
  • 相关阅读:
    最小的K个数
    堆排序
    归并排序
    希尔排序
    快速排序
    二分查找
    数组中出现次数超过一半的数字
    包含min函数的栈
    栈的压入、弹出序列
    中缀表达式转后缀表达式
  • 原文地址:https://www.cnblogs.com/AbsolutelyPerfect/p/9480588.html
Copyright © 2020-2023  润新知