from collections import deque def bfs(n): q.append(n) G[n] = 1 # 记录深度 while q: x = q.popleft() for j in range(2): # 左右各判断一次 if V[x][j] != 0: # 有子节点就继续 q.append(V[x][j]) G[V[x][j]] = G[x] + 1 # 记录深度 n = int(input()) V = {} # 建个字典 q = deque() for i in range(n): l, r = map(int, input().split()) V[i + 1] = (l, r) # 塞键值对,节点数 G = [0 for i in range(n + 1)] bfs(1) print(max(G)) #, end='') # max(G) # import sys # # sys.setrecursionlimit(5000) # def dfs(x, y): # global longth # if x == 0 or V[x] == (0, 0): # return # longth = max(longth, y) # dfs(V[x][0], y + 1) # dfs(V[x][1], y + 1) # # # n = int(input()) # # V = {} # 建个字典 # longth = 0 # for i in range(n): # l, r = map(int, input().split()) # # V[i + 1] = (l, r) # 塞键值对,节点数 # # dfs(l, r) # print(longth + 1) #, end='') ''' 第三题 试题名称:天空之城的树 时间限制:1.0 s 内存限制:128.0 MB 问题描述 拉姆达人在修建天空之城时,主要是依赖巨大的飞行石去维持悬空状态,依赖强壮的大树去作为建筑物的框架,假设大树是一棵有 n (n≤103)个结点的二叉树。给出每个结点的两个子结点编号(均不超过 n),建立一棵二叉树(根节点的编号为 1),如果是叶子结点,则输入 0 0。 建好这棵二叉树之后,请帮拉姆达设计师求出它的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。 输入描述 第一行一个整数 n,表示结点数。之后 n 行,第 i 行两个整数 l、r,分别表示结点i的左右子结点编号。若 l=0 则表示无左子结点,r=0 同理。 输出描述 一个整数,表示最大结点深度。 输入样例 7 2 7 3 6 4 5 0 0 0 0 0 0 0 0 输出样例 4 数据规模 数据保证,对于全部的测试点,保证 1≤n≤103。 '''
标签:结点,dfs,longth,range,collections,二叉树,input From: https://www.cnblogs.com/flyingsir/p/18152508