小蓝想知道,对于一棵有 2021 个结点的二叉树,树的权值最小可能是多少?c++
c++没怎么了解过,给您在GPT上闻了一下,请参考。
对于一棵有
n 个节点的二叉树,它可能的最小权值为 n−1。这是因为每一条边都需要至少一个权值,而一棵有 n 个节点的二叉树恰好有 n−1 条边。
以下是 C++ 的实现代码:
cpp
#include <iostream>
int main() {
int n = 2021;
int min_weight = n - 1;
std::cout << "The minimum weight of a binary tree with " << n << " nodes is " << min_weight << std::endl;
return 0;
}
输出结果为:
The minimum weight of a binary tree with 2021 nodes is 2020
记录一下,加深印象;
note:通过声明一个布尔变量flag来判断这个数是否存在;
int main()
{
bool flag; //声明一个布尔变量;
const int n=3,m=3; //定义常变量行和列
int i,j;
int a[n][m];
int k,max,maxj; //maxj为该行最大值的列标
cout<<"请输入一个3乘3的二维数组:";
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cin>>a[i][j];
}
}
for(i=0; i<n; i++) //求出该行的最大值的列下标;
{
k=a[i][0];
max=0;
for(j=0; j<m; j++)
{
if(a[i][j]>k)
{
max=a[i][j];
maxj=j;
}
}
flag=true; //默认flag为真
for(k=0; k<n; k++) //判断该行是否是其所在列的最小值;
{
if(max>a[k][maxj])
{
flag=false; //如果不是最小,继续下一行(i=1)的内循环
}
}
if(flag) //如果是最小,则输出
{
cout<<"a["<<i<<"]["<<maxj<<"]="<<max;
cout<<endl;
break;
}
}
if(!flag)
{
cout<<"这个数不存在!";
}
return 0;
}