牛客网——二叉树

题目描述

    如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。     比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。
 
 
 
链接:https://www.nowcoder.com/questionTerminal/f74c7506538b44399f2849eba2f050b5
来源:牛客网

#include<stdio.h>
int countNode(int n,int m){
    if(m>n) return 0;
    return countNode(n,2*m)+countNode(n,2*m+1)+1;
} 
int main(){
    int m,n;
    while(scanf("%d%d",&m,&n)!=EOF){
        if(m==0&&n==0) break;
        printf("%d\n",countNode(n,m));
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/JAYPARK/p/10305265.html