题解 | #二叉树#

二叉树

https://www.nowcoder.com/practice/f74c7506538b44399f2849eba2f050b5

递归子问题

#include <iostream>

using namespace std;

int n,m;
	
int f(int m){
	if(m > n)return 0;
	if(2 * m > n && 2 * m + 1 > n){
		// 当前节点为叶子节点 
		// 当前节点的叶子节点大于所有的节点数,这时候m子树只有m这个点
		return 1; 
	}
	return f(2 * m) + f(2 * m + 1) + 1;
}
int main(){

	
	while(cin >> m >> n){
		cout << f(m) << endl;
	}
	return 0;
} 
全部评论

相关推荐

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