Leetcode 树(102, 637)
637: 二叉树的层平均值
给定一个非空二叉树,返回一个由每层节点平均值组成的数组;
class Solution(object): def averageOfLevels(self, root): """ :type root: TreeNode :rtype: List[float] 实现方法: 设置两个数组,一个用于记录每层树的总和,一颗树记录每层树的节点个数; """ sum=[0.0 for i in range(1000)] count=[0.0 for i in range(10000)] num=0 def all(root,num): if root: sum[num]=sum[num]+root.val count[num]=1+count[num] all(root.left,num+1) all(root.right,num+1) all(root,num) res=[] for i in range(len(sum)): if count[i]!=0: res.append(sum[i]/count[i]) return res
注意上述的策略:
nums=[0.0 for i in range(100)]-------------[0.0,0.0........]
nums[i for i in range(100)]-----------------[0,1,2,3,4........99]
新定义一个函数,添加一个层数参数,如果目前答案的列表答案个数等于层数,那么当前层数的列表append新元素即可。
def levelOrder(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ result=[] def all(root,level): if root: if len(result)<level+1: result.append([]) result[level].append(root.val) all(root.left,level+1) all(root.right,level+1) all(root,0) return result