二叉树问题
2025-02-03 13:46:20
发布于:上海
#include<bits/stdc++.h>
using namespace std;
vector<int> tr[110];
bool st[110];
int main(){
int n;
cin>>n;
for(int i=0;i<n-1;i++){
int a,b;
cin>>a>>b;
tr[a].push_back(b);
tr[b].push_back(a);
}
//宽度
queue<int> q;
q.push(1);
int width = 0;
int heigth = 0;
while(q.size()){
heigth++;
int len = q.size();
width = max(width,len);
for(int i=0;i<len;i++){
int u = q.front();
q.pop();
st[u] = true;
for(int son:tr[u]){
if(st[son])continue;
q.push(son);
}
}
}
cout<<heigth<<" "<<width;
return 0;
}
这里空空如也
有帮助,赞一个