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的二维元素,依次进行遍历
相关文章推荐
- 637. Average of Levels in Binary Tree
- LeetCode 637: Average of Levels in Binary Tree
- 637. Average of Levels in Binary Tree
- leetcode编程记录13 #637 Average of Levels in Binary Tree
- Average of Levels in Binary Tree问题及解法
- Average of Levels in Binary Tree
- LeetCode 637 : Average of Levels in Binary Tree(java)
- Average of Levels in Binary Tree
- LeetCode Weekly Contest 40(1) - Average of Levels in Binary Tree
- LeetCode average Of Levels in Binary Tree
- [LeetCode] Average of Levels in Binary Tree 二叉树的层平均值
- 637. Average of Levels in Binary Tree
- leetCode_637_AverageOfLevelsInBinaryTree
- LeetCode Average of Levels in Binary Tree
- LeetCode 637 Average of Levels in Binary Tree(二叉树层序遍历)
- 【LeetCode】637 Average of Levels in Binary Tree
- Average of Levels in Binary Tree
- leetcode[Average of Levels in Binary Tree]//待整理多种解法
- 【LeetCode】637 Average of Levels in Binary Tree
- week19-leetcode #637-AverageofLevelsinBinaryTree