首页 > 编程知识 正文

bfs牛汇怎么样,有界深度优先搜索方法

时间:2023-05-06 06:18:12 阅读:50901 作者:2384

主题:在二进制树中平均级别

Given a non-empty二进制树,returntheaveragevalueofthenodesoneachlevelintheformofanarray

Example:

Input:

3

/

9 20

/

15 7

output : [ 3,14.5,11 ]

扩展:

theaveragevalueofnodesonlevel0is 3,on level 1 is 14.5,Ando nlevel2is 11.hence return [ 3,14.5,11 ]。

BFS解决:

解法在计算均值的地方太满了,可以选择性地忽略

#-* -编码: utf-8-* -

# 2017/7/17

#定义for a binary tree node。

类树(对象) :

def __init__(self,x ) :

self.val=x

self.left=None

self.right=None

类解决方案(对象) :

@静态方法

defaverage_of_levels(root ) :

''''

: param root :树节点

:return: List[float]

''''

s,Q=list (,list ) )

q.append ()、root ) )

while Q:

级别,u=Q[0] #1

Q=Q[1:] #2

s.append((level,u.val ) )

if u.left:

q.append((level1,u.left ) )

if u.right:

q.append((level1,u.right ) )

#打印级别,u.val

#打印s

fromcollectionsimportdefaultdict

result=默认光盘(列表)

for each in S:

level,val=each[0],each[1]

result[level].append(val )

#打印结果

re=[0foriinrange (max (result.keys ) )1) ]

for i,jinenumerate(re ) :

re [ I ]=浮动(sum (result ) I ) )/len (result ) I ) ) ) ) ) 0

返回re

根=趋势科技(3) )。

根. left=趋势科技(9) )。

根. left.left=treenode (3) )。

根. left.right=treenode (6) )。

root.right=treenode(20 ) )。

根. right.left=treenode (15 ) )。

root.right.right=treenode(7) )。

solution.average _ of _ levels (根)

后记:

1 .该主题洞主要位于二叉树各层节点数量不定,容易忽视。

2 .虽然主题难度很低,但这个主题对个人来说有很多成果。 主要是在算法设计问题上的理论应用吧。 因为在面对一个问题时,我总是埋头于暴力猜测,往往忽略了解决问题中最重要的一步——“前期思路分析”。

3 .问题不难。 简单来说,可以采用算法设计的归纳方法进行处理。 这个问题解决问题主要是两个步骤:“遍历图”和“平均值计算”。 把一个复杂的问题分解成多个简单的问题,然后合并,然后得出结论,这就是归简法的应用吧。 正规军的道路往往侧重于培养解决问题的能力,而不是解决问题

4 .虽然计算代码中平均值的过程已经填满,但图中的遍历还是有值得说的地方。 那是q这个队列。

一二行中的

u=Q[0];

Q=Q[1:]

改为#

u=Q.pop ()

会怎么样?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。