标签:include pre bsp sharp struct mes space argv ide
#include <iostream>
using namespace std;
struct point{
int r,l;//左孩右孩
int c;//在第几层
int f;//父节点
}p[20];
int c[1000]={0};//储存第i层节点个数
int n,w,h,ma;
int main(int argc, char *argv[])
{
int i,cc,w=0;
cin>>n;
if(n==1){cout<<1<<" "<<1;return 0;}
if(n==0){cout<<0<<" "<<0;return 0;}
for(i=1;i<=n;i++)
{
cin>>p[i].r>>p[i].l;
p[p[i].r].f=i;
p[p[i].l].f=i;
}
p[1].f=-1; p[1].c=1;
for(i=2;i<=n;i++)
p[i].c=p[p[i].f].c+1;
cc=p[n].c;
for(i=1;i<=n;i++)
if(p[i].c==cc)w++;
cout<<w<<‘ ‘<<cc;
return 0;
}
我也不知道能不能这么写吧虽然,反正看起来蛮对的。
深搜↓
#include<stdio.h>
#include<string.h>
int a[1000][2],s[1000]; //s[i]=x表示二叉树第i层有x个节点
int i,n,maxHight,maxWide;
void dfs(int i,int k) //i表示当前搜索的是第i个节点。k表示当前搜索到二叉树的第k层。
{
s[k]=s[k]+1;//s[k]表示二叉树中第k层的节点数目
if(k>maxHight) maxHight=k;
if(a[i][0]!=0) dfs(a[i][0],k+1);
if(a[i][1]!=0) dfs(a[i][1],k+1);
}
int main()
{
scanf("%d",&n);
memset(a,0,sizeof(a));
memset(s,0,sizeof(s));
for(i=1;i<=n;i++)
scanf("%d%d",&a[i][0],&a[i][1]);
maxHight=0;
dfs(1,1);
maxWide=0;
for(i=1;i<1000;i++)
if(s[i]>maxWide) maxWide=s[i];
printf("%d %d",maxWide,maxHight);
return 0;
标签:include pre bsp sharp struct mes space argv ide
原文地址:https://www.cnblogs.com/cici08/p/9304278.html