树的高度python

碰到一道数据结构相关题目:

题目描述

现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

输入描述:

输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,
下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号

输出描述:

输出树的高度,为一个整数
示例1

输入

5
0 1
0 2
1 3
1 4

输出

 
       
3

总结一下就是:python中跟树相关的数据都用字典来存比较方便

# -*- coding:utf-8 -*-
#@author:xinxinzhang
'''
现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

思路:用字典做数据结构,统计每个节点的所在层数和子节点数,返回最大层数
'''


n = int(input())
tree = {'0':[1,0]}#节点‘0’的【层数,子节点数】
for i in range(n-1):#遍历所有节点,统计所有节点所在层数和子节点数
    father,son=input().split()
    if father in tree and tree[father][1]<2:#如果该节点已经存在(说明已经有一个子节点与之匹配了,但是没匹配完)
        tree[father][1]+=1 #这时该节点又出现一次,所以节点个数需要加1
        tree[son]=[tree[father][0]+1,0]#为子节点创建树状结构【层数=上一层层数+1,该新节点的子节点数】

#打印最大层数:
print(max([i[0] for i in tree.values()]))

猜你喜欢

转载自blog.csdn.net/zuanfengxiao/article/details/80273298