数据结构树的平均高度★数据输入输入第一行一个正整数N (2 < N < 10000) 表示该树有N个结点.接下来N-1行

nirvana05232022-10-04 11:39:541条回答

数据结构树的平均高度
★数据输入
输入第一行一个正整数N (2 < N < 10000) 表示该树有N个结点.
接下来N-1行,每行两个整数a b ,表示a 是b的父亲结点,数据保证所给的是一棵树,
结点的编号为1到N.
★数据输出
输出一行一个整数,表示该树的平均高度,结果保留3位小数.
示例
7
1 2
1 3
1 4
3 5
3 6
6 7
输出1.857

已提交,审核后显示!提交回复

共1条回复
mmzyf 共回答了16个问题 | 采纳率87.5%
你这个是有问题的吧.7个节点,算出来是17/7=2.429
1个一层节点,3个两层节点,2个三层节点,1个四层节点,
1x1+3x2+2x3+1x4=17,你怎么算出来是13呢?
怎么会是1.857呢?
import os,sys
def find(root,f):
#print "root:",root," f:",f
for leaf in root:
#print ">>>leaf ",leaf
if leaf[0]==f:
#print "leaf[1]:",leaf[1]
return leaf[1]
else:
x=find(leaf[1],f)
if x!=None:
return x
return None
sum=0
def calc(root,level):
global sum
print "level,sum:",level,sum
for leaf in root:
print "level:",level,leaf
sum+=level*1
calc(leaf[1],level+1)
#sum+=num
print "sum:",sum
return sum
root=[]
tr=[(1,2),(1,3),(1,4),(3,5),(3,6),(6,7)]
for f,c in tr:
child=find(root,f)
#print "f,c,child:",f,c,child
if child==None:
leaf=[f,[ [c,[]] ]]
root.append( leaf )
else:
child.append( [ c,[] ] )
print root
print calc(root,1)/7.0
1年前

相关推荐

数据结构树和二叉树的实际应用不是什么题目,我要就是树二叉树实际应用举例,比如讲递归的实际应用举例是汉诺塔,类似这个.或者
数据结构树和二叉树的实际应用
不是什么题目,我要就是树二叉树实际应用举例,比如讲递归的实际应用举例是汉诺塔,类似这个.
或者换句话说,我要一道题目要用到树和二叉树的,但是又不是抽象的,比如举个例子:下面有两道线性结构的题目:
(1)读入10个整数存入数组a,求数组a中最大的数及位置
(2)小明有10个朋友,小明想知道他们中间谁拥有的玩具数量最多
读入小明10个朋友各有的玩具数目,输出拥有最多玩具数量的人的拥有的玩具数目,及那个小朋友的编号.
我要的是第二题的类型.
学了树和二叉树,最迷糊的是应用在哪里,
为我的分数不被百度吞噬-.-,所以我没弄悬赏分,
lml19871年前1
mcgrandy 共回答了20个问题 | 采纳率95%
一个单位有10个部门,每个部门都有一部电话,但是整个单位只有一根外线,当有电话打过来的时候,由转接员转到内线电话,已知各部门使用外线电话的频率为(次/天)
5 20 10 12 8 4 3 5 6 9
问应该如何设计个内线电话号码,使得接线员拨号次数尽可能少?
这是哈夫曼树的应用

大家在问