牛客网:树的高度 ← 根节点为 0 号节点
【题目来源】
https://www.nowcoder.com/questionTerminal/4faa2d4849fa4627aa6d32a2e50b5b25
【题目描述】
现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度。
【输入格式】
输入的第一行表示节点的个数 n(1 ≤ n ≤ 1000,节点的编号为 0 到 n-1)组成,
下面是 n-1 行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号。保证根节点为 0 号节点。
【输出格式】
输出树的高度,为一个整数。
【输入样例】
5
0 1
0 2
1 3
1 4
【输出样例】
3
【算法分析】
● 含 n 个结点的树,有 n-1 条边。
● 下面代码基于根结点为 0 号结点,且输入符合二叉树结构特点,即每个结点至多有两个分叉。
【算法代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int h[maxn];
int n,x,y,hi,imax;
int main() {
h[0]=1;
cin>>n;
for(int i=1; i<n; i++) {
cin>>x>>y;
h[y]=h[x]+1; //结点的层次
hi=h[y];
if(hi>imax) imax=hi;
}
cout<<imax<<endl;
return 0;
}
/*
in:
5
0 1
0 2
1 3
1 4
out:
3
*/
【参考文献】
https://www.nowcoder.com/questionTerminal/4faa2d4849fa4627aa6d32a2e50b5b25
https://www.cnblogs.com/saber114567/p/9340929.html