51Nod 2282 树的深度 python题解

题目链接
题目描述:
给出一棵n个节点的树,节点编号为1-n(根节点编号为1,且根节点深度为1),求这棵树的深度(树中节点的最大层次)。
例如:
1─2─4─5
└─3
其中1-2-4-5这条边是最长的,所以树的深度为4。
输入
第一行:1个数n(1 < n <= 1000),表示树的节点数量。
后面n-1行:每行2个数x y,表示节点x是节点y的父节点(1 <= x, y <= n)。
输出
输出1个数,表示这棵树的深度
输入样例
5
1 2
1 3
2 4
4 5
输出样例
4

思路
树上的DFS

代码

ans=-1
def dfs(index,depth): #index为根节点的索引
    global ans
    ans=max(ans,depth)
    for i in range(len(tree[index])):
        dfs(tree[index][i],depth+1)
    return ans
n = int(input())
tree=[[] for _ in range(n+1)]#存放子节点,加一位防止越界
for i in range(n-1):
    answer=0
    x,y=map(int,input().split()) #x是y的父节点
    tree[x].append(y)
dfs(1,1)
print(ans)
posted @ 2021-02-02 20:51  Dawn_zly  阅读(144)  评论(0)    收藏  举报