解题思路:
注意事项:
参考代码:
唯一题解:
#include<iostream> #include<cstdio> #include<cstring> #include<stack> #include<cmath> typedef long long ll; using namespace std; struct Node { int id,l,r; Node() { l=r=0; } } tr[1010];//保存二叉树 int p,dep[1010],ans=0;//个数,节点深度,答案(树的深度) void addedge(int i,int r,int l) { tr[i].id=i; tr[i].l=l; tr[i].r=r; }//编号为i的接点的左节点l,右节点r void Init() { scanf("%d",&p); int a,b,c; for(int i=1;i<p;i++) { scanf("%d%d%d",&a,&b,&c); addedge(a,b,c); } dep[1]=1;//注意初始化 } void DFS(int i) { if(tr[i].l) {//如果左节点不为0 dep[tr[i].l]=dep[i]+1;//左节点的深度 ans=max(ans,dep[i]+1);//更新树的深度 DFS(tr[i].l);//接着左节点向下找 } if(tr[i].r){//同理 dep[tr[i].r]=dep[i]+1; ans=max(ans,dep[i]+1); DFS(tr[i].r); } } int main() { Init(); DFS(1); printf("%d",ans); return 0; }
0.0分
3 人评分