二叉树

二叉树

http://www.nowcoder.com/questionTerminal/f74c7506538b44399f2849eba2f050b5

北京大学复试上机题(二叉树)
可采用分治的方法,先统计m点的节点数,然后递归地统计m左子树和右子树的节点数,当节点编号大于n时,递归返回。

#include <bits/stdc++.h>
using namespace std;

int sum = 0;        // 欲输出的节点总数

void nodeNum(int n, int m) {
    if (m > n) return;
    ++sum;          // 统计本节点
    nodeNum(n, 2*m);        // 统计左子树节点和右子树节点数
    nodeNum(n, 2*m + 1);
}

int main() {
    int n, m;
    while (scanf("%d %d", &m, &n) != EOF) {
        nodeNum(n, m);
        printf("%d\n", sum);
    }
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务