您的位置:首页 > 其它

LC-Average of Levels in Binary Tree

2017-12-24 14:33 399 查看
# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None

class Solution(object):
def averageOfLevels(self, root):
"""
:type root: TreeNode
:rtype: List[float]
"""
s = []

def dfs(node, depth=0):
if node:
if len(s) <= depth:
s.append([0, 0])
s[depth][0] += node.val
s[depth][1] += 1

dfs(node.left, depth + 1)
dfs(node.right, depth + 1)

dfs(root)
return [a/float(b) for a, b in s]

Sol = Solution()

t1 = TreeNode(1)
t1.left = TreeNode(2)
t1.right = TreeNode(3)

print Sol.averageOfLevels(t1)


0,较为高效

1,学到的东西:

首先,在定义函数时,可以对函数值进行初始化操作,也就是def dfs(node, depth=0):

这样,在调用时,便可以省略一些。当然,也可以不写,然后在调用时传递参数。

其次,算法的思想是定义一个二维数组,利用二维数组的特性,对点的层数进行标记并计算和。这也是层次遍历的基本思想和简单实现。

最后,简单的遍历二维数组的方式:

[a/float(b) for a, b in s]

#a为s的一维元素,b为s的二维元素,依次进行遍历
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: