一棵二叉树有2021个结点。该树满足任意结点的左子树结点个数和右子树的结点个数之差最多为1。
定义根结点的深度为0,子结点的深度比父结点深度多1。
请问,树中深度最大的结点的深度最大可能是多少?
答案:10(如果有错,还望在评论区纠正)
分析:
多分析几个案例,我们可以发现:二叉数的最大深度 = 除法操作的次数
当n-1是奇数时,n/=2;
当n-1为偶数时,n = (n-1) / 2;
代码:
#include<iostream>
using namespace std;
int main(){
int n = 2021;
int cnt = 0;
while(n!=1){
if((n-1) % 2 != 0){
n/=2;
}else{
n = (n-1)/2;
}
cnt++;
}
cout << cnt;
return 0;
}