二叉树做法,第二个点RE求助
查看原帖
二叉树做法,第二个点RE求助
828573
CurryNo_1楼主2023/1/6 22:30
#include<iostream>
using namespace std;
int n,l,r,ans=-1,mark[100010]={};
typedef struct treenode{
	int data;
	treenode* parent;
} trn;
trn* createnode(int tmpdata)//建立树节点 
{
	trn* tmp=new trn;
	tmp->data=tmpdata;
	tmp->parent=NULL;
	return tmp;
}
trn* aim[1000010];
int search(trn* num)
{
	if(num->data==1)  return 1;
	if(mark[num->data]!=0)  return mark[num->data];
	mark[num->data]=1+search(num->parent);
	return mark[num->data]; 
}
int main()
{
	cin >> n;
	mark[1]=1;
	aim[1]=createnode(1);
	for(int i=1;i<=n;i++)//建树 
	{
		cin >> l >> r;
		if(!aim[i]) aim[i]=createnode(i);
        if(l)
        {
        	aim[l]=createnode(l);
        	aim[l]->parent=aim[i];
		}
		if(r)
		{
			aim[r]=createnode(r);
			aim[r]->parent=aim[i];
		} 
	}
	for(int i=2;i<=n;i++) ans=max(ans,search(aim[i]));
	cout << ans;
}

dalao还有救吗,感觉是空间开大了

2023/1/6 22:30
加载中...